Pull to refresh

Технология Mobile-ID

Reading time 3 min
Views 20K

Привет!
Я хочу рассказать о том, что такое Mobile-ID, и как использовать эту услугу в своём софте.

Предыстория


В последние 10 лет в Эстонии появилось много разных электронных няшек: ID карта, электронные выборы, электронная школа (e-kool), дигитальный рецепт (digiretsept), электронный билет на общественный транспорт, порталы для граждан, пациентов больниц, портал для подачи показаний электросчётчиков и оплаты счетов за электричество, и так далее и тому подобное.

Одной из таких электронных няшек является Mobile-ID — средство идентификации пользователя с помощью мобильного телефона. Грубо говоря, имея мобильный телефон с правильной картой, вы можете легко логиниться в интернет-банк, государственные порталы, ну и вообще на любой сайт, поддерживающий аутентификацию через Mobile-ID. Как это сделать на своём сайте, я и расскажу в конце.


Как это видит пользователь


Сначала давайте посмотрим, как выглядит аутентификация через Mobile-ID с точки зрения пользователя.

Первым делом вам нужно пойти к своему мобильному оператору и заключить соответствующий договор. Вам поменяют вашу обычную SIM-карту на волшебную, на которой будет бегать специальное приложение, умеющее обрабатывать SMS определённого типа. Всё, с данного момента вы являетесь счастливым пользователем услуги Mobile-ID, что обойдётся вам примерно в 1$ ежемесячно.

Теперь мы заходим на нужный портал, например, крупнейший банк в Эстонии www.swedbank.ee, вводим номер пользователя и номер телефона.

Картинка 1: вход в интернет-банк



На странице появляется «контрольный код» — случайно сгенерированные 4 цифры, и в течение пары секунд на телефон приходит специальное сообщение с этим кодом.

Картинка 2: сверяем код



Я проверяю, что цифры на экране совпадают с цифрами в сообщении, и подтверждаю своё согласие. Ввожу пин-код из четырёх цифр. Вся прелесть этой технологии заключается в том, что это единственный код, который мне нужно помнить. Никаких паролей для каждого сайта, никаких карточек с кодами для интернет-банка!

Картинка 3: вводим пароль



Вот тут и происходит магия на нашей волшебной сим-карте. Она посылает сигнал на сервер о вашем согласии, банк получает оповещение, и вуаля — вы авторизированы!

Картинка 4: попадаем в банк



Как это работает


Схема работы изображена на диаграмме ниже.
В системе три действующих лица:
  1. Пользователь, которому нужно авторизироваться на сайте
  2. Сайт (банк, интернет-магазин, гос. портал и т.д. — в общем, любой сайт)
  3. Сертификационный центр (sertifitseerimiskekus, SK) — некая организация, которой доверяет государство и телефонные провайдеры. У неё есть база данных всех пользователей Mobile-ID, их телефонные номера и личные коды (аналог российского ИНН).




Как это видит разработчик


Допустим, вы разработчик того сайта, который хочет позволить своим пользователям авторизироваться через Mobile-ID. Ну например, вы делаете свой интернет-магазин. Что вам нужно сделать — это обратиться к SK посредством веб-сервиса. Вызов веб-сервиса довольно муторный, там целая куча разных параметров. Если вы делаете свой сайт на Java, вам скорее всего придётся сгенерировать целую кучу классов по заданному WSDL, вызвать библиотеку AXIS и всё такое. Так вот (к чему я всё это пишу!), чтобы облегчить жизнь программерам, мы в нашей фирме выпустили специальную опен-сорсную библиотеку, которая позволяет использовать Mobile-ID буквально в две строчки.

Выглядит это так:
  MobileIDAuthenticator mid = new MobileIDAuthenticator("https://www.openxades.org:8443/");
  MobileIDSession session = mid.startLogin(phoneNumber);
  showMessage("Чувак, ты сейчас получишь SMS с кодом " + session.challenge + ". Нажми OK и введи пароль.");
  mid.waitForLogin(session);


Вот и всё. Три строчки. Вызвать startLogin, показать пользователю код (challenge), и вызвать waitForLogin. Если пользователь согласился, метод вернёт его данные (имя, фамилия, личный код). Если пользователь отказался или выключил телефон — вылетит соответствующее исключение.

Здесь можно поглазеть на полноценное Swing приложение HelloWorld, использующее Mobile-ID.

Чтобы использовать библиотеку MobileID в своём коде, достаточно включить следующую зависимость:
  <dependency org="com.codeborne" name="mobileid" rev="0.9.2"/>


Кстати, в Питоне использовать веб-сервисы Mobile-ID гораздо проще: здесь описано, как.

Итогошки


Помимо авторизации, Mobile-ID позволяет ставить дигитальную подпись. Например, подписывать документы, подтверждать денежные переводы в интернет-банке и т.п. Правда, для этого придётся запомнить второй пин-код (из 5 цифр).

Вообще у технологии Mobile-ID большое будущее. Уже строятся планы, например, о том, как в магазине оплачивать покупки через Mobile-ID. В этом видео идея обрисована в деталях.

Вот правда, не знаю, в каких странах, кроме Эстонии, есть такая штуковина. Вроде слышал, что в Литве есть, ну а в России, видимо, пока нет.

Такие дела.

Надеюсь, было интересно.

Tags:
Hubs:
+16
Comments 19
Comments Comments 19

Articles