Azure活动目录回复URL未按预期工作

本文关键字:工作 URL 活动 回复 Azure | 更新日期: 2023-09-27 17:50:28

我在Azure Active Directory网站配置中指定了两个URL回复URL。当我运行本地代码时,一个重定向到我的本地主机环境,当我运行prod网站时,一个重定向到我的Azure托管网站。但是Azure Active directory似乎忽略了这个设置。它只使用其中一个URL,而不是同时使用两个URL。我看到了一个描述问题和可能解决方案的链接,但它对我不起作用。链接是:

http://samritchie.net/2013/07/17/azure-ad-single-sign-on-with-multiple-environments-reply-urls/

如何设置Azure Active Directory以重定向到适当的环境?

Azure活动目录回复URL未按预期工作

您没有提供有关实现的详细信息,但这是任何情况下的解决方案。

你可以使用WIF配置-这是完全配置在你的web。或者您可以使用OWIN,其中配置在Config.Auth.cs文件中。无论采用哪种方式,Azure AD的STS都将只使用默认的应答URI,而不管调用来自何处。你必须显式地设置ReplyUrl,以指示Azure AD将用户返回到注册的回复url之一。

<

WIF解决方案/strong>

当你使用WIF时,你的web配置包含以下部分:

  <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。配置转换,就像你为所有其他部署特定的应用程序设置和连接字符串所做的那样。

<

OWIN解决方案/strong>

当您使用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中的设置。配置文件,您也可以使用Web处理。配置转换。

对于OWIN,我有以下配置解决方案

            app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri
                #if !DEPLOY
                ,RedirectUri = "https://localhost:44369/"
                #endif
            });

所以它使用本地重定向时,我不构建部署。该项目被配置为为我正在构建的用于部署的版本声明DEPLOY。这样,它就会使用Azure中配置的默认重定向URL。