2017-01-01 131 views
0

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

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

我找到了解决办法我的问题

你应该Startup.Auth

   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); 
        }} 

添加以下代码OpenIdConnectAuthenticationOptions这样重定向URI是基于动态运行它

希望这是有帮助的机器上。