Authentication and Passport.js
Agenda
- Виды аутентификации
- Знакомство с Passport.js
- Пример авторизации на Passport.js
Identification
заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, и т. д.
Authentication
предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались
Authorization
проверка, что вам разрешен доступ к запрашиваемому ресурсу.
Tipes of authentication
Password auth
Basic
+
- простая в реализации
-
- ненадежная
- неконфигурируемая
- устаревшая
Forms
+
- конфигурируемая
- множество вариантов реализации
-
- встречаются ошибки в реализации
- токен доступа может перехватить злоумышленник
Implementation errors
- Веб-приложение позволяет пользователям создавать простые пароли.
- Веб-приложение не защищено от возможности перебора паролей.
- Веб-приложение само генерирует и распространяет пароли пользователям, однако не требует смены пароля после первого входа (т.е. текущий пароль где-то записан).
- Веб-приложение допускает передачу паролей по незащищенному HTTP-соединению либо в строке URL.
- Веб-приложение не использует безопасные хэш-функции для хранения паролей пользователей.
- Веб-приложение не предоставляет пользователям возможность изменения пароля либо не нотифицирует пользователей об изменении их паролей.
- Веб-приложение не требует повторной аутентификации пользователя для важных действий: смена пароля, изменения адреса доставки товаров и т. п.
- Веб-приложение создает session tokens таким образом, что они могут быть подобраны или предсказаны для других пользователей.
Sertificate auth
+
- один из самых безопасных способов аутентификации
-
- трудности в распространении и поддержке сертификатов
- не всегда удобна для пользователей
Two factors auth
+
- Дополнительный фактор аутентификации позволяет добиться большей защиты
-
- Более тяжелая в реализации, чем forms auth
By token auth
Text
+
- удобная для пользователя
- надежная (при условии, что identity provider - надежный ресурс)
- нет больших трудностей в реализации
-
- могут быть проблемы с безопасностью, если identity provider - ненадежный ресурс
Token formats
Simple Web Token (SWT) — наиболее простой формат, представляющий собой набор произвольных пар имя/значение в формате кодирования HTML form. Стандарт определяет несколько зарезервированных имен: Issuer, Audience, ExpiresOn и HMACSHA256. Токен подписывается с помощью симметричного ключа, таким образом оба IP- и SP-приложения должны иметь этот ключ для возможности создания/проверки токена.
Пример после декодирования:
Issuer=http://auth.myservice.com&
Audience=http://myservice.com&
ExpiresOn=1435937883&
UserName=John Smith&
UserRole=Admin&
HMACSHA256=KOUQRPSpy64rvT2KnYyQKtFFXUIggnesSpE7ADA4o9w
Simple Web Token
JSON Web Token
JSON Web Token (JWT) — содержит три блока, разделенных точками: заголовок, набор полей (claims) и подпись. Первые два блока представлены в JSON-формате и дополнительно закодированы в формат base64. Набор полей содержит произвольные пары имя/значения.
Пример после декодирования:
{ «alg»: «HS256», «typ»: «JWT» }.
{ «iss»: «auth.myservice.com», «aud»: «myservice.com», «exp»: «1435937883», «userName»: «John Smith», «userRole»: «Admin» }.
S9Zs/8/uEGGTVVtLggFTizCsMtwOJnRhjaQ2BMUQhcY
SAML
Security Assertion Markup Language (SAML) — определяет токены (SAML assertions) в XML-формате, включающем информацию об эмитенте, о субъекте, необходимые условия для проверки токена, набор дополнительных утверждений (statements) о пользователе. Подпись SAML-токенов осуществляется при помощи ассиметричной криптографии.
Passport.js
Some words about passport.js
Passport - это простое в использовании middleware для приложений, построенных на Node.js с использованием фреймворка express.
Passport отлично справляется с тем, чтобы отделить аутентификацию от другой логики приложения. Это позволяет легко встроить Passport в любое веб-приложение, построенное на Express, так же, как мы настраиваем другой middleware для Express, например logger, body-parser, cookie-parser, session-handler и т. д.
Passport.js strategies
Some words about strategies
Для аутентификации Passport использует отдельные модули, которые предоставляют различные стратегии аутентификации. Сегодня Passport располагает более чем 140 стратегиями аутентификации. Вы можете использовать local/remote аутентификацию или использовать single sign-on использованием OAuth для Facebook, Twitter, Google и т. д. Все эти стратегии независимы друг от друга и упакованы в виде отдельных модулей, которые не включены по умолчанию, когда вы устанавливаете Passport's middleware.
Authentication example
deck
By shutya
deck
- 655