2017-08-10 100 views
1

我構建了一個向IdentityServer4發送身份驗證詳細信息(用戶名/密碼)併成功接收令牌(授權類型=資源所有者密碼)的Angular 4站點。IdentityServer4 Cookie驗證

現在我想從Angular 4站點將用戶重定向到另一個(不同的)ASP Core MVC站點。 不知何故,我找不到在重定向中設置「標題」以將令牌傳遞爲授權的方式:承載xxx

我設置的cookie在角部位,然後就window.location.href = 'www.example.com/another_site

在MVC網站,我配置Startup.cs:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
     ... 
     ... 

     app.UseCookieAuthentication(new CookieAuthenticationOptions() 
     { 
      AuthenticationScheme = "Cookies_Authentication", 
      AutomaticAuthenticate = true, 
      AutomaticChallenge = true 
     }); 

     app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions 
     { 
      Authority = "http://my_identityserver4_address:49950", 
      RequireHttpsMetadata = false, 
      AuthenticationScheme = "Cookies_Authentication", 

      ApiName = "Protected_Api.get", 
      AutomaticAuthenticate = true, 
      AutomaticChallenge = true 
     }); 
} 

,但我還是收到從MVC站點401未授權的響應。我做錯了什麼?

可能是IdentityServer尋找特殊的cookie名稱?我將它設置在角爲:

cookieService.setItem('access_token', 'eyJhbGciOiJSUzI1NiIsImtpZCI6ImFlOWEyMzNhZDczOTUwNWI4YjJkZGE0NTNiMDE........)

回答

1

我想你可能會發現你的答案here只是看到應用程序接收來自服務器的身份令牌如何MVC和從您的角度應用重定向時,只是做同樣的事情。你需要玩這個example

UPDATE:@jasper是你的權利,你需要在https://identityserver4.readthedocs.io檢查OAuth的OpenID的事情碼頭也結帳在http://leastprivilege.com

+0

我想你的答案是最接近的 - 我需要更多地瞭解[OAuth和OpenID Connect](https://identityserver4.readthedocs.io/en/release/quickstarts/3_interactive_login.html),但方向是使用OpneID Connect用於cookie身份驗證,而不是承載頭。 – Jasper

0

自己的博客如果另一個MVC應用程序時,你不要在auth服務器上定義爲另一個客戶端」除了在啓動類中配置cookie和身份驗證中間件之外,您還必須設置其他任何設置,就像您已經在做的那樣。

基本上,如果用戶從App A登錄並打開另一個App B,則不需要重新登錄,因爲它可以驗證瀏覽器上的現有Cookie。它只需要通過反向通道驗證自己的身份。

+0

你是說什麼意思:...它只需要驗證自己...? – Jasper

+0

我的意思是用戶已經被授權,因爲如果用戶登錄App A並打開App B,但用戶沒有通過後臺通道進行認證,因爲它已經獲得認證代碼。身份服務器爲您提供單點登錄,用戶無需在每個應用程序上重新登錄。但訪問令牌會因不同的應用程序而有所不同。 – JayDeeEss