Понимание перенаправления URI и потока авторизации в OpenID Connect (OIDC)
Давайте подробнее рассмотрим перенаправление URI, так как это критический элемент безопасности в процессе аутентификации OIDC.
Что такое перенаправление URI?
Переадресация URI, также известная как URL ответа, является критическим элементом безопасности в процессе аутентификации OIDC. Она указывает URL, по которому пользователи перенаправляются после успешной авторизации через поставщика OIDC. Более важно, это то место, где ваше приложение получает код авторизации, необходимый для получения токенов.
Посмотрите вики страницы Redirect URI для получения дополнительной информации.
Что такое поток кода авторизации?
Поток кода авторизации (определён в OAuth 2.0 RFC 6749, раздел 4.1) является основным методом аутентификации в OIDC. Он включает обмен кода авторизации на токен доступа и, при необходимости, обновляющий токен. Этот поток подходит для приложений, которые могут безопасно хранить клиентский секрет, таких как серверные веб-приложения.
Посмотрите вики страницы потока кода авторизации для получения дополнительной информации.
Как работает перенаправление URI в потоке кода авторизации?
В потоке кода авторизации перенаправление URI является местом назначения, куда поставщик OIDC отправляет код авторизации после успешной аутентификации пользователя. Оно должно быть предварительно зарегистрировано у поставщика OIDC для обеспечения безопасности и предотвращения несанкционированных перенаправлений.
Вот как вы можете зарегистрировать ссылку для переадресации URI в Logto Console:
При инициировании входа в систему:
- Запрос авторизации: Ваше приложение направляет пользователя к конечной точке авторизации поставщика OIDC, включая параметры, такие как
client_id
,response_type
,scope
иredirect_uri
. - Аутентификация пользователя: Пользователь аутентифицируется у поставщика OIDC.
- Доставка кода авторизации: После успешной аутентификации поставщик OIDC перенаправляет пользователя на указанный
redirect_uri
, включая код авторизации в виде параметра запроса.
Поставщик OIDC проверяет redirect_uri
на соответствие списку предварительно зарегистрированных URI. Если имеется несоответствие, будет возвращена ошибка invalid_redirect_uri
, что повышает безопасность, предотвращая получение токенов неавторизованными конечными точками.
Лучшие практики для перенаправлений URI
В реальн ых сценариях часто встречающейся рекомендуемой практикой является создание выделенной страницы "Callback" и связывание с маршрутизатором или глубокой ссылкой, которые позволяют прямой доступ извне. Эта ссылка должна использоваться как перенаправление URI.
Если у вас есть одностраничное веб-приложение, работающее на https://my-app.com
, то обычно перенаправление URI будет указано как https://my-app.com/callback
Или, если это собственное мобильное приложение, то перенаправление URI обычно начинается с пользовательской схемы, например com.company://myapp/callback
Другие лучшие практики включают:
- Избегайте символов подстановки: не используйте шаблоны подстановки в перенаправлениях URI. Явно укажите все разрешенные URI, чтобы предотвратить несанкционированный доступ.
- Полное соответствие: убедитесь, что перенаправление URI точно соответствует зарегистрированному у поставщика OIDC. Даже конечный слэш может вызвать несоответствие.
Обработка обратного вызова при входе
Чтобы обработать код авторизации, возвращенный вашему redirect_uri
, выполните следующие шаги:
-
Извлечение кода авторизации: Получите параметр кода из строки запроса перенаправления URI.
-
Обмен кода авторизации на токены: Составьте POST-запрос к точке конечного действия токена поставщика OIDC, включая:
client_id
: ID вашего приложения у поставщика OIDCcode
: код авторизации, полученный из перенаправления URIcode_verifier
: случайная строка, сгенерированная на клиентеredirect_uri
: тот же URI, что использовался в запросе авторизацииgrant_type
: тип доступа, обычноauthorization_code
Образец запроса обмена токенов на JavaScript
Упростите процесс обмена кода в Logto, используя Logto SDK
Logto SDK - это комплект для разработки, написанный на определённом языке программирования или фреймворке, например, Logto React SDK, Next.js SDK и Swift SDK. Использование SDK может значительно упростить процесс, просто вызвав одну или две функции.
Вот пример компонента React "Callback" с использованием официального React SDK Logto:
Руководства по интеграции SDK можно найти в документации по быстрой настройке Logto.
Обзор: почему важно освоить перенаправление URI в OIDC
Понимание перенаправлений URI в OIDC с потоком кода авторизации имеет решающее значение для обеспечения безопасности и оптимизации процессов аутентификации. Путём регистрации доверенных перенаправлений URI и эффективной обработки обратных вызовов при входе вы можете обеспечить бесшовный и безопасный опыт для своих пользователей, в то время как упрощаете свои усилия по разработке с помощью Logto SDK.