Пять видов аутентификации и где они обитают
Намиг Нурмамедов
Экосистема Skyeng
Аутентификация бывает:
Виды аутентификации
Аутентификация в монолитных приложениях
Сессия
Использование сессии в skyeng
Аутентификация и микросервисы
В контексте микросервисов
В контексте микросервисов
В контексте микросервисов
1
1
1
1
1
1
957.54K

Пять видов аутентификации и где они обитают

1. Пять видов аутентификации и где они обитают

2. Намиг Нурмамедов

Backend developer
in mobile team
[email protected]
t.me/namig_nurmamedov
ф

3. Экосистема Skyeng

-
Обучающая платформа Vimbox
Мобильное приложение для изучения слов
Skyeng TV с субтитрами
Расширение для браузера
И многое другое

4. Аутентификация бывает:

Клиентская
Межсерверная
ф

5. Виды аутентификации

- Session
- JWT
- OAuth 2.0
- Query Token
- Basic Http
ф

6. Аутентификация в монолитных приложениях

А утентиф икация в
монол ит ны х прил ожениях
- Исторически, аутентификация была
state ful сервисом.
- Аутентификация встроена в сервер
монолитного приложения.
ф

7. Сессия

User credentials
Server
Session_id in cookie
Session storage
Session_id – User data
Session_id
ф
Client

8. Использование сессии в skyeng

Redirect
Open
Redirect back
words.skyeng.ru
id.skyeng.ru
?redirect=words.skyeng.ru
- User log in
- Set browser cookie session_id=123
for domain *.skyeng.ru
Send session_id=123
- Check user roles
- Show homepage
Return user data
ф
GET id.skyeng.ru/session
?session_id=123

9. Аутентификация и микросервисы

- Аутентификация — предоставление
доказательств, что вы на самом деле есть тот,
кем идентифицировались.
- Авторизация — проверка, что вам разрешен
доступ к запрашиваемому ресурсу.
ф

10. В контексте микросервисов

- Аутентификация представляет из себя
сервис.
- Авторизация - общая для всех сервисов
функциональность.
ф

11. В контексте микросервисов

Session_id
Session_id
User data
X
Authentication
service
Application
service
ф
Session_id
Client

12. В контексте микросервисов

Authentication
service
Token
Client
Secret key + User Data = Token
Private
Public
Secret key + Token = Verified User Data
Application
service
ф Token

13. 1

Json Web Token - JWT
Header
Payload
eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI
6IkpvaG4gRG9lIiwiaWF0IjoxNT.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6y
Signature

14. 1

JWT.IO
1

15. 1

JWT.IO
1

16. 1

Использование JWT
Login / password
Login / password
JWT
JWT / user_id
Сервис Words
Приложение для
изучения слов
Сервис Auth

17.

Почему мы не генерируем JWT
в сервисе Words?
- Это ответственность сервиса Auth
- Токен созданный в нашем проекте
не сможет использоваться в других
ф

18.

Какие инструменты использует
мобильный бэкенд?
- Symfony Guard Authentication System
- LexikJWTAuthenticationBundle
ф

19.

Как работаем с JWT локально и
в тестах?
- Моки пользователей с разными ролям
- В качестве токена используется логин
пользователя
ф

20.

OAuth 2.0
OAuth 2.0 — протокол авторизации,
позволяющий выдать одному сервису
(приложению) права на доступ к ресурсам
пользователя на другом сервисе.
ф

21.

OAuth 2.0: роли
Владелец ресурса
Пользователь, данные которого
мы будем шарить
ф

22.

OAuth 2.0: роли
Сервер ресурсов
Приложение, которое содержит
защищенные ресурсы
ф

23.

OAuth 2.0: роли
Сервер авторизации
Приложение, которое
подтверждает подлинность
пользователей
ф

24.

OAuth 2.0: роли
Клиент
Приложение, которое делает запросы
к серверу ресурсов от имени
владельца ресурса
ф

25.

OAuth 2.0 в Skyeng
Ученик школы
Браузерное расширение
Сервис Words
ф
Сервис Auth

26.

OAuth 2.0
Привет, браузерное расширение.
Я хочу посмотреть список своих слов на изучении.
Сервис Words, можешь дать мне список слов пользователя?
Извини, друг, это защищенный ресурс.
Тебе нужно передать мне access_token.
ф

27.

OAuth 2.0
Ноу проблем, сир. Мой логин [email protected]
и пароль secret.
Привет, друг. Можешь предоставить мне свои доступы?
Мне нужно тебя идентифицировать.
ф

28.

OAuth 2.0
Вот твой список слов. Учи на здоровье!
Сервис Words, вот access_token:
qKJkqkw1qk5yeuTolkpKn2Jlq
Все в порядке. Получай список слов.
Да,
конечно,
валиден и принадлежит
ф
Привет,
мне этот
далитокен
qKJkqkw1qk5yeuTolkpKn2Jlq
[email protected]
Можешь сказать, кому он принадлежит?

29. 1

Использование OAuth 2.0
Шаг 1: Аутентификация в браузерном расширении
client_id
redirect_uri
response_type=code
access_token

30. 1

Использование OAuth 2.0
Шаг 2: Получение списка слов на изучении
access_token
access_token
word_list
Сервис Words
user_data
client_id
Сервис Auth

31.

Query Token
- Токен передается в строке запроса вместе
с email пользователя.
- Используется в публичном API для
пользователей.
- Токен отправляется пользователю на email
ф
по запросу.

32.

Query Token
GET api.words.ru/api/public/words
[email protected]
&token=bcfaa
ф

33.

Query Token
- Токен генерируется на основе хэшфункции по email + secret key.
- Токены не хранятся на сервере.
ф

34.

Basic Http
- Для аутентификации между
внутренними сервисами Skyeng
ф

35.

Вывод
Существуют разные виды
аутентификации и каждый из них имеет
свою область применения
ф

36.

ВОПРОСЫ?
ф
English     Русский Правила