OAuth
Термины
В данном примере пользователь имеет на Google Drive фотографии, которые хочет распечатать на стороннем сервисе
Protected Resource - фотографии на Google Drive
Resource Owner - пользователь которому принадлежат фото на диске. У него есть доступ
к Protected Resource и возоможность выдавать доступ к нему.
Resource Server - сервис на котором хранится Protected Resource. В нашем случае это Google Drive
Client - приложение, которому нужен доступ к Protected Resource. В нашем случае это Printing Service
Authorization Server - сервис, который отвечает за то, что доступ к Protected Resource
получает только авторизованные пользователи. Он выдаёт Access Tokens клиенту
Процесс
Вариант 1: Authorization Code Flow
1) Пользователь (Resource Owner) обращается к клиенту (Client) с запросом о печате своих фото (Protected Resource) с Google Drive (Resource Server)
2) Printing Service (Client) обращается к Authorization Server с сообщением о том, что ему нужно распечатать фотоки пользователя (Resource Owner) и передаёт данные о пользователе и о фотографиях, доступ к которым ему нужен.
3) Authorization Server обращается к Resource Owner и сообщает, что Client запросил доступ к Protected Resourse и хочет выполнить определённые действия. Вопрос - согласен ли на это Resource Owner
4) Resource Owner отвечает, что всё ОК
5) Authorizaion Server отправляет клиенту (Client) Authorization Token . Обычно это короткоживущий токен.
6) Client запрашивает у Autorization Server Access Token . К этому запросу он присоединяет полученный ранее Authorization Token .
7) Authorizaion Server проверяет Authorization Token и отправляет на Client Access Token
8) Client и отправляет на Resource Server Access Token и запрашивает доступ к Protected Resource
9) Resource Server проверяет Access Token и выдает Client доступ к Protected Resource
Кратко
Откуда | Куда | Сообщение | ||
---|---|---|---|---|
Resource Owner | → | Client | Сделай что-то с моим Protected Resource | |
Client | → | Authorization Server | Нужен доступ к Protected Resource | |
Authorization Server | → | Resource Owner | Давать Client доступ к твоему Protected Resource? | |
Resource Owner | → | Authorization Server | Давай | |
Authorization Server | → | Client | Authorization Token | |
Client | → | Authorization Server | Authorization Token + Дай мне Access Token | |
Authorization Server | → | Client | Access Token | |
Client | → | Resource Server | Access Token + Дай мне доступ к Protected Resource | |
Resource Server | → | Client | Доступ к Protected Resource |