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 не получает данных о том, на каком сайте залогинился пользователь.
Анатолий АЛИЗАР
Горячие темы