Процесс авторизации

Этот процесс гарантирует, что приложение получает доступ только к тем ресурсам, на которые пользователь явно дал разрешение, и что жизненный цикл доступа ограничен во времени токенами.

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