У нас есть приложение 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. Внутренняя ссылка недоступна за пределами сети компании и должна оставаться такой.
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.
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.
Update 2:
Based from the logs of WAF it does not redirect to https://internallink.com/signin-oidc. После аутентификации он переходит к https://externallink.com/api/foo, что является желаемым результатом. введите описание изображения здесь
Кажется, я смог решить эту проблему самостоятельно. Мне просто нужно установить ProtocolMessage.RedirectUri в событии OnRedirectToIdentityProvider на внешнее полное доменное имя.
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); }; });
Вам необходимо зарегистрировать в Azure AD точный URL-адрес перенаправления для использования, и он должен совпадать с URL-адресом перенаправления, который вы отправили на Azure AD.
Это функция безопасности для ограничения разрешенного URL-адреса перенаправления . Принятие любого URL-адреса приведет к серьезной уязвимости системы безопасности.