Какова реальная цель Redirect_Uri в OpenIdConnect?
Из OpenID Connect, 3.1.2.1 Запрос аутентификации :
redirect_uri
REQUIRED. Redirection URI to which the response will be sent.
This URI MUST exactly match one of the Redirection URI values
for the Client pre-registered at the OpenID Provider [...]
Итак, цель redirect_uri
- сообщить провайдеру OpenID (Azure AD, в вашем случае), куда должен быть отправлен ответ на запрос после входа пользователя.
Борется ли он с атакой Redirect_Uri?
Сам параметрПредложите функциональность, описанную выше, она не ослабляет атаки.Клиент (т.е. ваше приложение) и поставщик OpenID (например, Azure AD) несут ответственность за то, чтобы они действовали правильно, чтобы не подвергать риску атаки (включая атаку, связанную с перенаправлениями).
Например, если провайдер OpenID не проверил, что redirect_uri
из запроса точно соответствует URI перенаправления, настроенному для клиента, то злоумышленник может создать запрос авторизации с redirect_uri
, указывающим на URLконтролируется злоумышленником, а затем обманом заставляет пользователя инициировать запрос.Ответ на запрос затем будет отправлен злоумышленнику, а не проверяющей стороне, к которой пользователь думает , в которую он входит.
Существуют и другие атаки, связанные с redirect_uri
что может произойти, если проверяющая сторона (в данном случае ваше приложение) обнаружит уязвимость (например, путем включения атаки с открытым перенаправлением или авторизации URL-адреса ответа, который фактически не находится под вашим контролем).
Многие из этих (и других) атак, а также современные рекомендации по их смягчению или предотвращению описаны в Рекомендации по безопасности OAuth 2.0 .
Я пыталсяотправлять разные Redirect_Uri из веб-клиента.Microsoft AAD завершается с ошибкой, URL-адреса ответов не совпадают с ошибкой.Но при обновлении веб-приложения оно уже зарегистрировано.Разве AAD не лишит законной силы мою попытку входа в систему с помощью незаконного перенаправления uri?
Похоже, что проблема в вашем приложении.Когда Azure AD обнаруживает, что запрошенный redirect_uri
не совсем соответствует URI авторизованного ответа для клиента, Azure AD не перенаправляет обратно на клиент с кодом авторизации или какими-либо токенами.
Возможно, что вашприложение уже установило сеанс ранее или неправильно обрабатывает поток OpenID Connect.Невозможно сказать, не зная конкретных деталей того, как реализовано приложение.