signin-oid c Также пытается вызвать внутреннее полное доменное имя - PullRequest
0 голосов
/ 04 августа 2020

У нас есть приложение ASP. NET Core, которое использует протокол аутентификации OpenId Connect. В Azure AD B2 C мы устанавливаем внешнее полное доменное имя (псевдоним домена) (https://externallink.company.com) в качестве URI перенаправления. Мы заметили, что после перенаправления на https://externallink.company.com/signin-oidc он затем перенаправляется на внутреннее полное доменное имя https://internallink.company.com/signin-oidc, которое является URL-адресом службы приложений в Azure. Внутренняя ссылка недоступна за пределами сети компании и должна оставаться такой.

enter image description here

The error that we got is this:

redirect_uri_mismatch&error_description=AADB2C90006: The redirect URI 'https://internallink.company.com/signin-oidc' provided in the request is not registered for the client id 'xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx'.%0D%0ACorrelation ID

This is how we have setup the authentication in the Startup class.

enter image description here

Should I specifically put the Callback path so that OpenId does not attempt to call the internal FQDN?

Update:

If I try to add the internal FQDN in the list of redirect URIs I will be able to sign in but afterwards I will get this error (URL is https://internallink.company.com/signin-oidc). Это ожидается, потому что, как я уже упоминал, внутренний URL-адрес недоступен через publi c inte rnet.

enter image description here

Update 2:

Based from the logs of WAF it does not redirect to https://internallink.com/signin-oidc. После аутентификации он переходит к https://externallink.com/api/foo, что является желаемым результатом. введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Кажется, я смог решить эту проблему самостоятельно. Мне просто нужно установить ProtocolMessage.RedirectUri в событии OnRedirectToIdentityProvider на внешнее полное доменное имя.

services.AddAuthentication(options => { ... })
    .AddCookie("Cookies")
    .AddOpenIdConnect("oidc", options =>
    {
       ...

       options.Events.OnRedirectToIdentityProvider = context => 
       {
           context.ProtocolMessage.RedirectUri = "https://externallink.com/signin-oidc";
           return Task.FromResult(0);
       };
    });
0 голосов
/ 04 августа 2020

Вам необходимо зарегистрировать в Azure AD точный URL-адрес перенаправления для использования, и он должен совпадать с URL-адресом перенаправления, который вы отправили на Azure AD.

Это функция безопасности для ограничения разрешенного URL-адреса перенаправления . Принятие любого URL-адреса приведет к серьезной уязвимости системы безопасности.

...