Процесс авторизации
Этот процесс гарантирует, что приложение получает доступ только к тем ресурсам, на которые пользователь явно дал разрешение, и что жизненный цикл доступа ограничен во времени токенами.
- Регистрация приложения
- Перед началом процесса авторизации, приложение должно быть зарегистрировано на сервере авторизации, получив идентификатор клиента (client_id) и секретный ключ (client_secret).
- Запрос авторизации
- Приложение перенаправляет пользователя на URL авторизации сервера, передавая следующие параметры:
- client_id - идентификатор клиента
- redirect_uri - URL для перенаправления после авторизации
- response_type - тип ожидаемого ответа, например code для кода авторизации
- scope - запрашиваемые права доступа к ресурсам
- state - уникальный идентификатор состояния для предотвращения атак
- Приложение перенаправляет пользователя на URL авторизации сервера, передавая следующие параметры:
- Аутентификация пользователя
- Сервер авторизации запрашивает у пользователя его учетные данные и разрешение на доступ приложения к ресурсам.
- Получение кода авторизации
- После успешной аутентификации сервер перенаправляет пользователя обратно на redirect_uri с кодом авторизации в параметре code.
- Обмен кода на токен доступа
- Приложение выполняет POST-запрос к серверу авторизации, передавая:
- client_id и client_secret
- code - полученный ранее код авторизации
- grant_type=authorization_code
- redirect_uri - тот же URL, что и при запросе авторизации
- В ответ сервер возвращает токен доступа (access_token) и, возможно, обновленный токен (refresh_token).
- Приложение выполняет POST-запрос к серверу авторизации, передавая:
- Использование токена доступа
- Приложение включает полученный access_token в заголовок Authorization при запросах к API для доступа к ресурсам от имени пользователя.
- Обновление токена доступа
- Токены доступа обычно имеют ограниченное время жизни. При истечении срока действия токена, приложение может обновить его, выполнив POST-запрос к серверу авторизации с параметрами:
- client_id и client_secret
- grant_type=refresh_token
- refresh_token - ранее полученный обновленный токен
- В ответ сервер вернет новый access_token и, при необходимости, новый refresh_token.
- Токены доступа обычно имеют ограниченное время жизни. При истечении срока действия токена, приложение может обновить его, выполнив POST-запрос к серверу авторизации с параметрами: