Autentimise märkmed: mobiil-ID
Ametlik dokumentatsioon ID-teenuste arendajale: http://id.ee/index.php?id=30388
DigiDocService spetsifikatsioon
PHP näidisrakendus. Sellelt lehelt leiad ka enamuse vajalikke linke testimiseks.
Reaalseks kasutuseks on vaja teha SK-ga leping ja saada pääsutõend, ilma selleta on ligipääsetav ainult testteenus (kus on võimalik reaalseid telefone kasutada, esmaseks testimiseks piisab testnumbritest)
Arhitektuur
Mobiil-ID on realiseeritud SOAP teenusena. Seetõttu pole mingit ametlikku teeki selle kasutamiseks vaja, piisab SOAP kliendist. Koosneb kahest päringust:
-
MobileAuthenticate
- saadab teenusele numbri, saab tagasi sessiooni id ja PIN koodi. Kliendi telefonis küsitakse PIN-i. -
GetMobileAuthenticateStatus
- annab autentimise tulemuse (või "OUTSTANDING_TRANSACTION", mis tähendab, et kasutaja pole PIN-i sisestamisega veel valmis). Tulemust küsitakse eelmisest päringust saadud sessiooni id-ga.
Realiseerimine Pythonis
sudo apt-get install python-suds
Tekitame SOAP kliendi
>>> import suds >>> client = suds.client.Client("https://tsp.demo.sk.ee/?wsdl")
Järgnevad käsud on ka kõik Pythonis.
Alustame autentimist. MobileAuthenticate
spekki vaata ametlikust dokumentatsiooonist.
request = client.service.MobileAuthenticate( "", # isikukood "", # riigi kood '+37200000766', # telefoninumber (siin testnumber) 'EST', # või RUS, ENG 'Testimine', # testteenuses see, lives oma rakenduse nimi "", "", 'asynchClientServer', # staatus saadakse teada pollides 0, False, False)
Saame teada kas õnnestus
print request.Status
Isikukood ja muud isikuandmed on õnnestumise korral vastuses, aga kasutaja pole veel autenditud! Need andmed on seotud sisse toksitud telefoninumbriga, aga kasutaja peab veel tõestama, et tegu on ta enda telefoniga.
print request.UserIDCode
PIN-koodi tuleb nüüd kasutajale näidata
print request.ChallengeID
Ja tulemuse küsimiseks kood
sessid = str(request.Sesscode)
Järgmist päringut tuleb vajadusel pollida mitu korda, esimene päring on mõistlik umbes 15 sekundi pärast.
request2 = client.service.GetMobileAuthenticateStatus( sessid, # MobileAuthenticate vastusest False # teenus vastab kohe, ei oota valmis saamist )
Kõiki võimalikke staatuseid vt jällegi ametlikust dokumentatsioonist. "OUTSTANDING_TRANSACTION" tähendab, et oota natuke ja polli uuesti.
print request2.Status