Ответ 1
Вы не предоставляете информацию о своей реализации, но вот решение для любого случая.
Вы можете использовать конфигурацию WIF, которая полностью конфигурируется в вашем web.cofing, или вы можете использовать OWIN, где конфигурация находится в файле Config.Auth.cs. В любом случае STS Azure AD будет использовать только URI ответа по умолчанию, независимо от того, откуда идут вызовы. Вы должны явно указать ReplyUrl для указания Azure AD вернуть пользователя на один из зарегистрированных URL-адресов ответов.
WIF-решение
Когда вы используете WIF, ваша веб-конфигурация содержит следующий раздел:
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="true" />
<wsFederation passiveRedirectEnabled="true"
issuer="https://login.windows.net/yourtenant.com/wsfed"
realm="https://yourtenant.com/WebSingleTenant"
requireHttps="true" />
</federationConfiguration>
</system.identityModel.services>
который немного несовместим! Вы можете добавить тег reply
в тег wsFederation
, чтобы указать Azure AD для нового URL-адреса ответа:
<wsFederation passiveRedirectEnabled="true"
issuer="https://login.windows.net/yourtenant.com/wsfed"
realm="https://yourtenant.com/WebSingleTenant"
reply="http://any_registered_url/"
requireHttps="true" />
Обратите внимание, что здесь вы можете использовать только зарегистрированные URL-адреса ответов.
Чтобы изменить атрибут ответа, вы можете безопасно использовать преобразования web.config, как и для всех других настроек приложения и конкретных подключений.
Решение OWIN
Когда вы используете OWIN, у вас будет файл Startup.Auth.cs
, или ваша настройка проверки подлинности будет непосредственно в вашем файле Startup.cs
. Он будет выглядеть примерно так:
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.
AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri
});
}
Обратите внимание на настройки конфигурации для проверки подлинности OpenIdConnect. Вы можете добавить свойство RedirectUri
, чтобы указать, куда перенаправить пользователя:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
RedirectUri = "any_registered_redirect_uri"
});
Вы можете назначить RedirectUri параметру в файле Web.Config, который также вы сможете обрабатывать с помощью преобразований Web.Config.