Anton Keks
24 Nov 2011

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 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 before running the code.

from sys import exit
from suds.client import Client
import time
import logging

url = '' # test env
client = Client(url)

mid = client.service.MobileAuthenticate('', '', '+372xxxxxx', 'EST', 'Testimine', ' login', '12345678901234567890', 'asynchClientServer', 0, False, False)
if mid.Status != 'OK':
    print mid.Status

print 'Challenge: ' + mid.ChallengeID

    status = client.service.GetMobileAuthenticateStatus(mid.Sesscode, False).Status

if status != 'USER_AUTHENTICATED':
    print status

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 - returns 101 server fault. What is the real URL and request? Is everything the same?

Our recent stories

How we built a virtual power plant

How Codeborne helped Alexela to transform Estonia's energy scene with Smart Electricity, an innovative virtual power plant that promotes smarter energy use