How to use Mobile-ID in Python Anton Keks, 24 Nov 2011
Mobile-ID (Mobiil-ID) is a personal mobile identity in Estonia and Lithuania, provided by an additional application on a SIM card.
The good thing is that it is backed by government and provides the same level of security for authentication and digital signatures as a national ID card without the need of having a smart card reader.
So, while thinking on adding Mobile-ID authentication to our era.ee free domain service, I have came up with this Python code, which is incredibly simple. Replace +372xxxxxx with your own phone number for testing and register it at https://demo.sk.ee/MIDCertsReg/ before running the code.
from sys import exit from suds.client import Client import time import logging logging.basicConfig(level=logging.INFO) url = 'https://tsp.demo.sk.ee/?wsdl' # test env client = Client(url) mid = client.service.MobileAuthenticate('', '', '+372xxxxxx', 'EST', 'Testimine', 'era.ee login', '12345678901234567890', 'asynchClientServer', 0, False, False) if mid.Status != 'OK': print mid.Status exit(1) print 'Challenge: ' + mid.ChallengeID status = 'OUTSTANDING_TRANSACTION' while status == 'OUTSTANDING_TRANSACTION': time.sleep(2) status = client.service.GetMobileAuthenticateStatus(mid.Sesscode, False).Status if status != 'USER_AUTHENTICATED': print status exit(2) print 'Authenticated: ' + mid.UserGivenname + ' ' + mid.UserSurname + ', ' + mid.UserIDCode
Don't forget to install the SUDS Python library that does the magic of creating SOAP requests (apt-get install python-suds on Debian & Ubuntu)
In real environment sadly this script does not work for me also customer has agreement with sk.ee - returns 101 server fault. What is the real URL and request? Is everything the same?