您没有提供有关您的实施的详细信息,但这里有一个适用于任何情况的解决方案。
您可能正在使用 WIF 配置 - 这完全是您的 web.cofing 中的配置,或者您可能正在使用 OWIN,其中配置位于您的 Config.Auth.cs 文件中。无论哪种方式,Azure AD 的 STS 都将仅使用默认回复 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" />
请注意,这里您只能使用注册回复网址。
要修改回复属性,您可以安全地使用 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 转换来处理。