SMS Token gehen nicht

69 views
Skip to first unread message

Manfred Schmid

unread,
Jun 23, 2015, 8:24:56 AM6/23/15
to priva...@googlegroups.com
Hallo,

ich habe einem Rechner privacyIdea am laufen, E-Mail token gehen.
Ich habe dazu eine Policy eingetragen: { "otppin": "userstore", "smsautosend": true }

Per /validate/check?user=xxx&pass=xxxx  kann ich nun eine E-Mail anfordern. (return 200)

Wen ich dem User aber eine SMS - Token zuweise bekomme ich per /validate/check?user=xxx&pass=xxxx nur einen 500 zurück!
Und in Audit steht:  create_challenge() takes at least 2 arguments (2 given)

Vielleicht kann mir ja jemand weiterhelfen !

Danke



Cornelius Kölbel

unread,
Jun 23, 2015, 11:45:07 AM6/23/15
to priva...@googlegroups.com
Hallo,
was steht denn in privacyidea.log.
Da müsste es einen längeren Traveback geben.
Wie sieht die Konfiguration der SMS Token aus?

Schönen Gruß
Cornelius Kölbel

PS: Falls möglich sollte die Mailing Liste in Englisch beschrieben
werden. Vielen Dank.
> --
> You received this message because you are subscribed to the Google
> Groups "privacyidea" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to privacyidea...@googlegroups.com.
> To post to this group, send email to priva...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/privacyidea/44445f92-f9c5-40e1-957a-d364a1582966%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

--
Cornelius Kölbel
corneliu...@netknights.it
+49 151 2960 1417

NetKnights GmbH
http://www.netknights.it
Landgraf-Karl-Str. 19, 34131 Kassel, Germany
Tel: +49 561 3166797, Fax: +49 561 3166798

Amtsgericht Kassel, HRB 16405
Geschäftsführer: Cornelius Kölbel


signature.asc

Manfred Schmid

unread,
Jun 24, 2015, 1:10:28 AM6/24/15
to priva...@googlegroups.com
Guten Morgen,

danke erst einmal.
Als SMS Provider habe ich ein eigenes Gateway bzw habe ich es auch mit dem SIPProvider versucht. Das PrivacyIdea versucht erst gar nicht das Gateway irgendwie zu connecten!

Grüße Manfred Schmid

Policy sieht so aus:

Scope: authentication

Action: { "otppin": "userstore", "smsautosend": true }


SMS Token ist wie folgt konfiguriert:

SMS Provider: HttpSMSProvider
Timeout: 400

Provider Config:
{ "USERNAME" : "youruser",
"PASSWORD" : "yourpassword",
"URL" : "http://gateway/source/send_sms.php",
"PARAMETER" : { "user":"Admin", "password":"PASSWORD", "from":"SMSGTW" },
"SMS_TEXT_KEY":"testo",
"SMS_PHONENUMBER_KEY":"nphone",
"HTTP_Method":"GET",
"RETURN_SUCCESS" : "ID"
}

Und im Anschluss noch den Auszug aus dem Log:

Traceback (most recent call last):
  File "/opt/privacyidea/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/privacyidea/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/privacyidea/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/privacyidea/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/privacyidea/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/lib/postpolicy.py", line 83, in policy_wrapper
    response = wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/lib/postpolicy.py", line 83, in policy_wrapper
    response = wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/lib/postpolicy.py", line 83, in policy_wrapper
    response = wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/lib/postpolicy.py", line 83, in policy_wrapper
    response = wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/lib/postpolicy.py", line 83, in policy_wrapper
    response = wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/lib/postpolicy.py", line 83, in policy_wrapper
    response = wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/lib/prepolicy.py", line 87, in policy_wrapper
    return wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/decorators.py", line 67, in check_user_or_serial_in_request_wrapper
    f_result = func(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/lib/prepolicy.py", line 87, in policy_wrapper
    return wrapped_function(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/api/validate.py", line 178, in check
    result, details = check_user_pass(user, password, options=options)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/policydecorators.py", line 77, in policy_wrapper
    return self.decorator_function(wrapped_function, *args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/policydecorators.py", line 192, in auth_user_passthru
    return wrapped_function(user_object, passw, options)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/policydecorators.py", line 77, in policy_wrapper
    return self.decorator_function(wrapped_function, *args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/policydecorators.py", line 117, in auth_user_has_no_token
    return wrapped_function(user_object, passw, options)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/policydecorators.py", line 77, in policy_wrapper
    return self.decorator_function(wrapped_function, *args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/policydecorators.py", line 152, in auth_user_does_not_exist
    return wrapped_function(user_object, passw, options)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/log.py", line 125, in log_wrapper
    f_result = func(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/token.py", line 1690, in check_user_pass
    options=options)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/log.py", line 125, in log_wrapper
    f_result = func(*args, **kwds)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/token.py", line 1834, in check_token_list
    attributes = tokenobject.create_challenge(options=options)
  File "/opt/privacyidea/lib/python2.7/site-packages/privacyIDEA-2.4.dev12-py2.7.egg/privacyidea/lib/log.py", line 125, in log_wrapper
    f_result = func(*args, **kwds)
TypeError: create_challenge() takes at least 2 arguments (2 given)

Cornelius Kölbel

unread,
Jun 24, 2015, 2:41:10 AM6/24/15
to priva...@googlegroups.com
Hallo und vielen Dank,
Sie haben einen Bug im SMS Token gefunden.
Ich bin gerade dran und dann gibt es einen Fix.

Schönen Gruß
Cornelius Kölbel
> https://groups.google.com/d/msgid/privacyidea/fb306b39-05fe-4120-9492-0752abf1b094%40googlegroups.com.
signature.asc

Manfred Schmid

unread,
Jun 24, 2015, 3:48:43 AM6/24/15
to priva...@googlegroups.com
Das ist doch schön das ich auch mal einen Bug finde !

Besten dank

ich freue mich schon auf den FIX!

Cornelius Kölbel

unread,
Jun 24, 2015, 3:50:09 AM6/24/15
to priva...@googlegroups.com
Hallo,

der Fix ist fertig und in das Release 2.4 eingeflossen.

Vielen Dank und schönen Gruß
Cornelius Kölbel
signature.asc

Cornelius Kölbel

unread,
Jun 24, 2015, 3:56:11 AM6/24/15
to priva...@googlegroups.com
...wird gerade im PPA gebaut und sollte in etwa einer halben Stunde
verfügbar sein.

Schönen Gruß
COrnelius Kölbel
> https://groups.google.com/d/msgid/privacyidea/7f9afd54-f198-4a3f-8e13-fe7d0d02de32%40googlegroups.com.
signature.asc

Manfred Schmid

unread,
Jun 24, 2015, 8:24:07 AM6/24/15
to priva...@googlegroups.com
Okay vielen Danke,

habe es bereits eingerichtet, hatte noch Probleme mit der Verbindung zu meinem Gateway.
Habe mir dazu die HttpSMSProvider.py minimal angepasst um genau zu sein habe ich folgende Zeilen aus kommentiert.

#if password is None and username is None:
        #    parsed_url = urlparse(url)
        #    if "@" in parsed_url[1]:
        #        puser, server = parsed_url[1].split('@')
        #        username, password = puser.split(':')

und

r = requestor(url, params=parameter,
                      data=parameter,
                      #verify=ssl_verify,
                      #auth=basic_auth,
                      proxies=proxies)



jetzt schickt das Gateway mir eine SMS.
Wen ich mich nun zum zweiten mal authentifiziere (mit PIN),
dann schickt mir das PI noch mal eine SMS.

Audit zeigt bei der ersten SMS in der INFO:
Enter the OTP from the SMS:

In der zweiten:
matching 1 tokens

Manfred Schmid

unread,
Jun 24, 2015, 8:32:29 AM6/24/15
to priva...@googlegroups.com
Okay,

hat sich auch erledigt !

Hatte in der Policy "smsautosend" aktiviert!

Ohne geht es richtig !

Nochmals besten Dank !

Cornelius Kölbel

unread,
Jun 24, 2015, 8:53:56 AM6/24/15
to priva...@googlegroups.com
Hi,

die Zeilen muss man nicht unbedingt auskommentieren.

SSL Verify
==========

In der SMS Config kann man noch

CHECK_SSL: False

eingeben. Dann wird das SSL Zertifikat nicht geprüft. Was eigentlich
nicht empfehlenswert ist.

Basic Auth
==========
Wird verwendet, da in der Config
"USERNAME" : "youruser",
"PASSWORD" : "yourpassword",
steht.
Wenn man die weglässt, macht auch auch kein basic_auth.

Schönen Gruß
Cornelius Kölbel
> https://groups.google.com/d/msgid/privacyidea/73c06ffc-9163-49c9-a4d5-4c6e6282f09d%40googlegroups.com.
signature.asc

Manfred Schmid

unread,
Jun 24, 2015, 1:43:16 PM6/24/15
to priva...@googlegroups.com
Das habe im SourceCode gesehen, 

ich muss allerdings eine Basic Auth machen, allerdings hat das mir den Code so bei mir nicht funktioniert, bekam imer Code 401 zurück.
Ich habe das auch in einem kurzen Skript selbst versucht, aber es funktioniert nur wen in der url Username und Passwort drin steht.
Verstehen tuh ich es nicht .

Kann man den selbst einen SMSProvider einbauen?
Und dafür sorgen das er in der Liste auftaucht ?

Manfred Schmid

Cornelius Kölbel

unread,
Jun 24, 2015, 4:12:57 PM6/24/15
to priva...@googlegroups.com
Hm, das ist aber dann nicht basic auth, wenn username und password als
Parameter übergeben werden. Das müsste aber auch wie folgt gehen:

{ "URL" : "http://api.clickatell.com/http/sendmsg",
"PARAMETER" : {
"user":"YOU",
"password":"YOUR PASSWORD",
"api_id":"YOUR API ID"
"USERNAME": ...,
"PASSWORD": ...
},
"SMS_TEXT_KEY":"text",
"SMS_PHONENUMBER_KEY":"to",
"HTTP_Method":"GET",
"RETURN_SUCCESS" : "ID",
"USERNAME": ...,
"PASSWORD": ....
}

Wenn USERNAME / PASSWORD in den PARAMETER steht, dann werden diese als
fixe HTTP parameter übergeben. Alles was so in PARAMETER steht, wird
einfach übergeben.

Wenn die Keywords USERNAME / PASSWORD als keys in der obersten Ebene
auftauchen, dann werden sie für basic authentication verwendet und nicht
als Parameter übergeben.

Prinzipiell kann man einen eigenen SMS Provider schreiben. Der muss von
privacyidea.lib.smsprovider.SMSProvider:ISMSProvider vererbt sein und
kann irgendwo liegen.
Der springende Punkt ist bloß, dass man ihn konfigurieren können muss.
Die Liste der verfügbaren SMS Provider ist im WebUI zur Zeit aber hart
kodiert.
In
privacyidea/static/components/config/controllers/configControllers.js
Dort im "tokenConfigController".

Ich würde aber eher schauen, ob ein entsprechender Provider nicht
anpassbar ist.
Einen neuen Provider hatte ich mal für sipgate geschrieben, weil die
sehr anders funktionieren.

Solange es aber ein HTTP-Gateway ist, würde ich versuchen, den Provider
zu erweitern.

Freundlich grüßt
> https://groups.google.com/d/msgid/privacyidea/6270b47e-ac42-48f8-8c3f-1397924e52bd%40googlegroups.com.
signature.asc
Reply all
Reply to author
Forward
0 new messages