Привет!
Я хочу рассказать о том, что такое Mobile-ID, и как использовать эту услугу в своём софте.
Предыстория
В последние 10 лет в Эстонии появилось много разных электронных няшек: ID карта, электронные выборы, электронная школа (e-kool), дигитальный рецепт (digiretsept), электронный билет на общественный транспорт, порталы для граждан, пациентов больниц, портал для подачи показаний электросчётчиков и оплаты счетов за электричество, и так далее и тому подобное.
Одной из таких электронных няшек является Mobile-ID — средство идентификации пользователя с помощью мобильного телефона. Грубо говоря, имея мобильный телефон с правильной картой, вы можете легко логиниться в интернет-банк, государственные порталы, ну и вообще на любой сайт, поддерживающий аутентификацию через Mobile-ID. Как это сделать на своём сайте, я и расскажу в конце.
Как это видит пользователь
Сначала давайте посмотрим, как выглядит аутентификация через Mobile-ID с точки зрения пользователя.
Первым делом вам нужно пойти к своему мобильному оператору и заключить соответствующий договор. Вам поменяют вашу обычную SIM-карту на волшебную, на которой будет бегать специальное приложение, умеющее обрабатывать SMS определённого типа. Всё, с данного момента вы являетесь счастливым пользователем услуги Mobile-ID, что обойдётся вам примерно в 1$ ежемесячно.
Теперь мы заходим на нужный портал, например, крупнейший банк в Эстонии www.swedbank.ee, вводим номер пользователя и номер телефона.
Картинка 1: вход в интернет-банк
На странице появляется «контрольный код» — случайно сгенерированные 4 цифры, и в течение пары секунд на телефон приходит специальное сообщение с этим кодом.
Я проверяю, что цифры на экране совпадают с цифрами в сообщении, и подтверждаю своё согласие. Ввожу пин-код из четырёх цифр. Вся прелесть этой технологии заключается в том, что это единственный код, который мне нужно помнить. Никаких паролей для каждого сайта, никаких карточек с кодами для интернет-банка!
Вот тут и происходит магия на нашей волшебной сим-карте. Она посылает сигнал на сервер о вашем согласии, банк получает оповещение, и вуаля — вы авторизированы!
Как это работает
Схема работы изображена на диаграмме ниже.
В системе три действующих лица:
- Пользователь, которому нужно авторизироваться на сайте
- Сайт (банк, интернет-магазин, гос. портал и т.д. — в общем, любой сайт)
- Сертификационный центр (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.1"/>
Кстати, в Питоне использовать веб-сервисы Mobile-ID гораздо проще: здесь описано, как.
Такие дела.
Вообще у технологии Mobile-ID большое будущее. Уже строятся планы, например, о том, как в магазине оплачивать покупки через Mobile-ID. В этом видео идея обрисована в деталях.
Надеюсь, было интересно.
Автор: asolntsev