Azure Active Directory网站重定向意外

时间:2017-01-01 09:10:06

标签: c# azure owin azure-active-directory

我在Azure Active Directory网站配置回复URL中指定了两个URL。一个是在我运行本地代码时重定向到我的localhost环境,另一个是在我运行prod网站时重定向到我的Azure托管网站。但Azure Active目录似乎忽略了该设置。它只使用一个或另一个URL,但不能同时使用两者 这是我的startup.Auth.cs

public partial class Startup
{
    private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
    private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
    private static string tenantId = ConfigurationManager.AppSettings["ida:TenantId"];
    private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];

    private static string authority = aadInstance + tenantId;    

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.GivenName;

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri,                    

                TokenValidationParameters = new TokenValidationParameters
                {                                                
                    RoleClaimType = "roles"
                },

            });            
    }
}

这是我的startup.cs

 public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);      
    }

最后这是我的web.config设置

<appSettings>
<add key="ida:ClientId" value="*************************" />
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
<add key="ida:AppKey" value="******************************" />
<add key="ida:TenantId" value="****************************" />
<add key="ida:PostLogoutRedirectUri" value="url of production website" />
<add key="ida:Domain" value="company domain" />
</appSettings>

我不知道为什么会出现这种重定向

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法

您应该在Startup.Auth中的OpenIdConnectAuthenticationOptions中添加以下代码

               Notifications = new OpenIdConnectAuthenticationNotifications()
                {
                    RedirectToIdentityProvider = (context) =>
                    {
                        context.ProtocolMessage.RedirectUri = HttpContext.Current.Request.Url.GetLeftPart(System.UriPartial.Path);
                        context.ProtocolMessage.PostLogoutRedirectUri = new UrlHelper(HttpContext.Current.Request.RequestContext).Action("Index", "Home", null, HttpContext.Current.Request.Url.Scheme);
                        context.ProtocolMessage.Resource = GraphAPIIdentifier;                            
                        return Task.FromResult(0);
                    }}

这样重定向uri是根据您运行它的机器动态的

希望这会有所帮助。