Слайд 1ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 2ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 3Что такое JWT?
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 4{
"alg": "HS512",
"typ": "JWT"
}
{
"sub": "12345",
"name": "John Gold",
"admin": true
}
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 5ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Сериализованные JSON токены
eyJhbGciOiJub25lIn0.
eyJzdWIiOiJ1c2VyMTIzIiwicHJvZHVjdElkcyI6WzEsMl19.
[ Header
].[ Payload ].[ Signature ]
Слайд 6ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Сериализация
Слайд 7ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Даже ежу
понятно
Слайд 8Материалы
https://jwt.io/introduction
https://github.com/auth0/jwt-handbook-samples
https://habr.com/company/dataart/blog/262817
http://saml.xml.org/saml-specifications
https://openid.net/connect
https://auth0.com
https://github.com/auth0/node-jsonwebtoken
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 9ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
Запрос
Server
Слайд 10ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
Запрос
Server
id: {…}
id: {…}
…
id: {…}
Id
cookie
Слайд 11ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
Запрос
Server
id: {…}
id: {…}
…
id: {…}
Id
cookie
Id
Слайд 12ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
api.domen1.com
auth.domen2.com
Слайд 13ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
api.domen1.com
Id
auth.domen2.com
Слайд 14ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
api.domen1.com
Id
auth.domen2.com
Id
Слайд 15ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
api.domen1.com
Id
auth.domen2.com
Id
Слайд 16ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
api.domen1.com
Id
auth.domen2.com
Id
Слайд 17ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
api.domen1.com
Id
auth.domen2.com
Id
secret
secret
Слайд 18ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
api.domen1.com
{data} + подпись
auth.domen2.com
secret
secret
Слайд 19ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Client
api.domen1.com
{data} + подпись
auth.domen2.com
secret
secret
{data} +
подпись
Слайд 20Single Sign-On (SSO)
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 21Access и refresh токены
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 22ООО "Спортмастер"
Федюнин В., Тимофеев Д.
api.domen1.com
Access token (5-10 min)
Authorization
Слайд 23ООО "Спортмастер"
Федюнин В., Тимофеев Д.
api.domen1.com
Access token (5-10 min)
Authorization
401
Refresh
token (> 20 min)
/refresh
Слайд 24ООО "Спортмастер"
Федюнин В., Тимофеев Д.
api.domen1.com
Authorization
401
Refresh token (> 20
min)
/refresh
access_token
refresh_token
Access token (5-10 min)
Слайд 25ООО "Спортмастер"
Федюнин В., Тимофеев Д.
api.domen1.com
Access token (5-10 min)
Authorization
401
Refresh
token (> 20 min)
/refresh
new_access_token
new_refresh_token
Access token (5-10 min)
new_access_token
Authorization
Secured resource
Слайд 26паролю
сертификатам
одноразовым паролям
токенам
Аутентификация по:
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 27Аутентификация по паролю
HTTP authentication
Basic
Digest
NTLM
Negotiate
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 28Аутентификация по паролю
Forms authentication
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 29Аутентификация по сертификатам
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 30Аутентификация по одноразовым паролям
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 31Аутентификация по токенам
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 32Стандарты
Simple Web Token (SWT)
JSON Web Token (JWT)
Security Assertion Markup Language (SAML)
ООО
"Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 33Stateful Session
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 34Stateless Session
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 35Защита токенов
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Подпись JWT (JWS)
Шифрование
(JWE)
Слайд 36Структура: заголовок
alg: алгоритм
Необязательные ключи:
typ: тип токена (type). Должно иметь значение «JWT».
cty: тип содержимого
(content type).
ООО "Спортмастер"
Федюнин В., Тимофеев Д.
Слайд 37Структура: полезная нагрузка
iss: issuer.
sub: subject
aud: audience.
exp: expiration.
nbf: not before.
jti: JWT ID
ООО "Спортмастер"
Федюнин
В., Тимофеев Д.