BrowserID: почтовый адрес как ID пользователя

Mozilla закончила разработку BrowserID - единой децентрализованной системы аутентификации, которая использует HTML5, криптографию с открытым ключом и цифровые подписи. Она основана на упрощённой интерпретации Verified Email Protocol.

Даже сейчас, на первом этапе внедрения, система довольно проста для пользователя: ему нужно один раз подтвердить email, после чего он получает возможность безопасной авторизации на любом сайте в два клика мышкой, без ввода пароля. В будущем авторизация ещё более упростится, когда поддержку BrowserID внедрят в браузеры, а почтовые провайдеры станут центрами идентификации первого уровня.

Так будет работать система, если Gmail станет поддерживать BrowserID. В этом случае отпадёт необходимость подтверждать свой email на сайте Browserid.org, который сейчас является пока единственным центром идентификации первого уровня.

Кроме отсутствия паролей, ключевым преимуществом BrowserID является защита приватности - в отличие от OpenID и всех подобных систем, провайдер identity в BrowserID не получает данных о том, на каком сайте залогинился пользователь.

Для поддержки BrowserID достаточно включить библиотеку include.js, добавив следующую строчку в заголовок страницы:

<script src="https://browserid.org/include.js" type="text/javascript"></script>

По нажатию на кнопку осуществляется вызов функции верификации адреса электронной почты.

navigator.id.getVerifiedEmail(function(assertion) {
 if (assertion) {
// This code will be invoked once the user has successfully
// selected an email address they control to sign in with.
 } else {
// something went wrong! the user isn't logged in.
 }
});

После успешной проверки адреса электронной почты API возвращает вам подписанную строку assertion, которая подтверждает email пользователя.

На втором этапе вам нужно верифицировать assertion и получить email пользователя. Это делается запросом к https://browserid.org/verify с двумя параметрами POST (assertion и audience) - запрос подписан уже вашей подписью. Верификатор проверяет валидность assertion.

$ curl -d "assertion=<ASSERTION>&audience=https://mysite.com" "https://browserid.org/verify"
{
 "status": "okay",
 "email": "lloyd@example.com",
 "audience": "https://mysite.com",
 "expires": 1308859352261,
 "issuer": "browserid.org"
}

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

Анатолий АЛИЗАР

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!