Электронное правительство / Mobile-ID

в 6:54, , рубрики: java, электронное правительство, метки: ,

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

Предыстория

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

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

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

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

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

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

Картинка 1: вход в интернет-банк
Электронное правительство / Mobile ID

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

Картинка 2: сверяем код
Электронное правительство / Mobile ID

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

Картинка 3: вводим пароль
Электронное правительство / Mobile ID

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

Картинка 4: попадаем в банк
Электронное правительство / Mobile ID

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

Схема работы изображена на диаграмме ниже.
В системе три действующих лица:

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

Электронное правительство / 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.1"/> 

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

Такие дела.

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

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

Автор: asolntsev

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js