How to use Mobile-ID in Python
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)
Archived comments
ornyx 2012-03-07T20:17:07.200Z
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?
Our recent stories
Transforming the workflow for financial reporting
From Word documents to a unified platform: Tackling workflow inefficiencies
Not only a Java house - what has changed?
In the past four years, the technological landscape at Codeborne has evolved significantly.
From prototype to platform: Revolutionising learning at kood/Jõhvi
How prototyping, collaboration, and innovation transformed a unique coding school’s educational system