Русский
  • redirect uri
  • обратный вызов
  • код авторизации
  • поток кода
  • oidc
  • pkce

Понимание перенаправленного URI и потока кода авторизации в OpenID Connect (OIDC)

Давайте подробнее рассмотрим перенаправленный URI, так как это критически важный компонент безопасности в процессе аутентификации OIDC.

Charles
Charles
Developer

Что такое Redirect URI?

Перенаправленный URI, также известный как URL-адрес ответа, является критически важным компонентом безопасности в процессе аутентификации OIDC. Он указывает URL-адрес, на который пользователи перенаправляются после успешного входа через провайдера OIDC. Более важно, это место, где ваше приложение получает код авторизации, необходимый для получения токенов.

Посмотрите Auth Wiki > Redirect URI для более подробной информации.

Что такое поток кода авторизации?

Поток кода авторизации (определенный в OAuth 2.0 RFC 6749, секция 4.1) является фундаментальным методом аутентификации в OIDC. Он включает обмен кода авторизации на токен доступа и, при необходимости, на токен обновления. Этот поток подходит для приложений, которые могут безопасно хранить секрет клиента, таких как серверные веб-приложения.

Посмотрите Auth Wiki > Authorization Code Flow для более подробной информации.

Как работает Redirect URI в потоке кода авторизации?

В потоке кода авторизации Redirect URI является местом назначения, куда провайдер OIDC отправляет код авторизации после успешной аутентификации пользователя. Он должен быть предварительно зарегистрирован у провайдера OIDC, чтобы обеспечить безопасность и предотвратить несанкционированные перенаправления.

Вот как вы можете зарегистрировать Redirect URI в Logto Console: redirect-uri

При запуске входа:

  1. Запрос авторизации: Ваше приложение направляет пользователя на конечную точку авторизации провайдера OIDC, включая такие параметры, как client_id, response_type, scope и redirect_uri.
  2. Аутентификация пользователя: Пользователь аутентифицируется у провайдера OIDC.
  3. Доставка кода авторизации: После успешной аутентификации провайдер OIDC перенаправляет пользователя на указанный redirect_uri, включая код авторизации в виде параметра запроса.

Провайдер OIDC проверяет redirect_uri на совпадение с заранее зарегистрированными URI. Если обнаруживается несоответствие, будет возвращена ошибка invalid_redirect_uri, что повышает безопасность путем предотвращения доступа несанкционированных конечных точек к токенам.

Лучшие практики для Redirect URI

В реальных сценариях часто рекомендуется объявить выделенную страницу "Callback" и ассоциировать маршрутизатор / глубокую ссылку, которая позволяет прямой доступ извне. Эта ссылка должна использоваться как redirect URI.

Если у вас есть одностраничное веб-приложение, работающие на https://my-app.com, обычно redirect URI будет объявлено как https://my-app.com/callback

Или если это нативное мобильное приложение, то redirect URI обычно начинается с пользовательской схемы, например com.company://myapp/callback

Другие лучшие практики включают:

  • Избегайте подстановочных символов: Не используйте подстановочные шаблоны в redirect URI. Явно перечислите все разрешенные URI, чтобы предотвратить несанкционированный доступ.
  • Полное совпадение: Убедитесь, что redirect URI точно совпадает с зарегистрированным в OIDC провайдере. Даже завершающий слэш может вызвать несоответствие.

Обработка обратного вызова входа

Чтобы обработать код авторизации, возвращенный на ваш redirect_uri, выполните следующие шаги:

  1. Извлечение кода авторизации: Получите параметр кода из строки запроса redirect URI.

  2. Обменяйте код авторизации на токены: Составьте POST-запрос к конечной точке токенов провайдера OIDC, включая:

    • client_id: ID вашего приложения у провайдера OIDC
    • code: Код авторизации, полученный из redirect URI
    • code_verifier: Случайная строка, сгенерированная на клиенте
    • redirect_uri: Тот же URI, который использовался в запросе на авторизацию
    • grant_type: Тип гранта, обычно authorization_code

Образец запроса на обмен токенами на JavaScript

Упростите процесс обмена кодами в Logto, используя SDK Logto

SDK Logto - это наборы для разработки, написанные на конкретном языке программирования или фреймворке, например, Logto React SDK, Next.js SDK и Swift SDK. Использование SDK может значительно упростить процесс, вызвав всего одну или две функции.

Вот пример компонента "Callback" в React с использованием официального Logto React SDK:

Руководства по интеграции SDK можно найти на Logto Docs > Quick-starts.

Подытожим: почему важно овладеть Redirect URI в OIDC

Понимание Redirect URI в OIDC с потоком кода авторизации имеет решающее значение для обеспечения безопасности и оптимизации процессов аутентификации. Регистрация надежных redirect URI и эффективная обработка обратных вызовов входа может обеспечить бесшовный и безопасный опыт для ваших пользователей, упрощая ваши усилия по разработке с помощью SDK Logto.