Какова реальная цель Redirect_Uri в OpenIdConnect? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь настроить аутентификацию OpenID Connect ( Single-tenanted ) для моего веб-приложения.Я понимаю, как должен работать ответ URL в AAD.Администратор AAD регистрирует веб-приложение с помощью SignInUrl, ReplyUri, AppIdUri и т. Д. Microsoft AAD обрабатывает весь пользовательский интерфейс для запроса и проверки учетных данных.Злоумышленник может быть не в состоянии создать легитимную атаку на сайт (, поскольку это * .microsoftonline.com page ).

Вопросы:

  1. Чтореальная цель Redirect_Uri в OpenIdConnect?Борется ли он с атакой Redirect_Uri?

  2. Я пытался отправить другой Redirect_Uri из веб-клиента.Microsoft AAD завершается с ошибкой, URL-адреса ответов не совпадают с ошибкой.Но при обновлении веб-приложения оно уже зарегистрировано.Разве AAD не лишает законной силы мою попытку входа в систему с помощью незаконного перенаправления uri?

Пожалуйста, предложите мне, как просмотреть перенаправление Uri.Я хотел бы использовать реальную выгоду.

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Какова реальная цель 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.Невозможно сказать, не зная конкретных деталей того, как реализовано приложение.

1 голос
/ 27 марта 2019

Теперь я думаю, что нашел тайну в аномалиях signin-redirect_uri.

Вопросы:

  1. Какова реальная цель Redirect_Uriв OpenIdConnect?Борется ли он с атакой Redirect_Uri?

    [OP] Да, это так.Если домен redirect_uri отличается от регистрации сервера AAD и веб-клиента, это делает попытку входа в систему недействительной.

  2. Я попытался отправить другой Redirect_Uri из веб-клиента.Microsoft AAD завершается с ошибкой, URL-адреса ответов не совпадают с ошибкой.Но при обновлении веб-приложения оно уже зарегистрировано.Разве AAD не лишает законной силы мою попытку входа в систему с помощью незаконного перенаправления uri?

    [OP] Redirect_Uri не ведет себя, когда я размещаю свое приложение в localhost даже на разных портах или в одном домене.Таким образом, он игнорирует проверку Redirect_Uri, если я нажимаю на Sign-In, несмотря на первую ошибку Reply-Uri-Mismatch.

Обратите внимание, что Redirect_Uri обрабатывает атаку Open redirect, если злоумышленник хочетперенаправить жертву на незаконную страницу для повторного ввода учетных данных.

...