2016-05-24 80 views
1

我有一個工作正常的IdentityServer2 auth服務器。我正在創建一個新的.NET MVC應用程序,並按照這篇文章(http://www.cloudidentity.com/blog/2014/02/20/ws-federation-in-microsoft-owin-componentsa-quick-start/)設置帶有IDS2的MS OWIN。我可以訪問登錄屏幕,但登錄後,用戶被髮回到調用網站並陷入無限循環。OWIN/IdentityServer登錄卡在無限循環中

Startup.Auth.cs

using Microsoft.Owin.Security; 
using Microsoft.Owin.Security.Cookies; 
using Microsoft.Owin.Security.WsFederation; 
using Owin; 

namespace AZBarMail 
{ 
    public partial class Startup 
    { 
     public void ConfigureAuth(IAppBuilder app) 
     { 
      app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

      app.UseCookieAuthentication(
       new CookieAuthenticationOptions 
       { 
        AuthenticationType = 
         WsFederationAuthenticationDefaults.AuthenticationType 
       }); 
      app.UseWsFederationAuthentication(
       new WsFederationAuthenticationOptions 
       { 
        MetadataAddress = "https://auth.azbar.org/federationmetadata/2007-06/federationmetadata.xml", 
        Wtrealm = "https://localhost:44310/", 
       }); 
     } 
    } 
} 

web.config中的部分

<system.web> 
    <authentication mode="None" /> 
    <compilation debug="true" targetFramework="4.6.1" /> 
    <httpRuntime targetFramework="4.6.1" /> 
</system.web> 

Startup.cs

using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartup(typeof(AZBarMail.Startup))] 
namespace AZBarMail 
{ 
    public partial class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      ConfigureAuth(app); 
     } 
    } 
} 

重定向URL在IDS2

https://localhost:44310/ 

回答

0

問題終於解決了。似乎是Cookie類型/設置的問題。

+0

有沒有機會記得你在這裏做了什麼?我目前面臨同樣的問題。 – Drew

0

將您的用戶重定向到/ account/login。

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/account/Login"), 
       CookieName = CookieAuthenticationDefaults.CookiePrefix + "SampleClient", 
       ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter, 
       LogoutPath = new PathString("/account/Logout") 
      }); 

app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 

從/ account/login,重定向到外部提供者。

externalprovider將在其域中創建一個cookie,並且您將在收到來自外部提供商的響應後在您的域上創建一個cookie。

+0

但是如果我的網站中沒有任何名爲/ account/Login的東西呢?我從項目中刪除了所有登錄頁面,因爲登錄全部在SSO站點上處理。我能不能從主頁重定向到我的主頁? –

+0

SSO在其域和另一個網站域中創建一個cookie,因此需要告知SSO頁redirect_uri,以便SSO可以重定向回您的頁面,並且您可以在您的域中創建一個cookie。 – Rajat