2017-08-10 3 views
1

Ich baue eine Angular 4-Site, die Authentifizierungsdetails (Benutzername/Passwort) an IdentityServer4 sendet und erfolgreich ein Token zurück erhält (Grant-Typ = Ressourceneigner-Passwort).Cookie-Validierung von IdentityServer4

Jetzt möchte ich Benutzer zu einer anderen (anderen) ASP Core MVC-Site von meiner Angular 4 Website umleiten. Irgendwie kann ich keinen Weg finden, um "Header" in Umleitung einzurichten, um Token als Autorisierung zu übergeben: Bearer xxx.

stelle ich Cookie in Angular-Website und dann window.location.href = 'www.example.com/another_site nur

auf MVC-Website konfigurieren ich in 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 
     }); 
} 

aber ich empfange noch 401 Unauthorized Antwort von Website MVC. Was mache ich falsch?

Kann IdentityServer nach einem speziellen Cookie-Namen suchen? Ich gründe es in Angular als:

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

Antwort

1

Ich glaube, Sie Ihre Antwort finden könnten here nur sehen, wie Mvc app das Token vor Identitätsserver empfängt und nur gleiche tun, wenn sie von Ihrem Winkel App umleiten. Und Sie müssen mit dieser example spielen.

UPDATE: @jasper ja Sie mit der rechten Sie die Docks auf OAuth OpenID Sache bei https://identityserver4.readthedocs.io auch ihrem Blog überprüfen müssen Kasse bei http://leastprivilege.com

+0

Ich denke, Ihre Antwort war die nächste - ich muss mehr über [OAuth und OpenID Connect] (https://identityserver4.readthedocs.io/en/release/quickstarts/3_interactive_login.html) aber Richtung ist zu verwenden OpneID Connect für Cookie-Authentifizierung und nicht Bearer-Header. – Jasper

0

Wenn dies eine weitere MVC-app als ein anderer Client auf dem Auth-Server definiert ist Sie don‘ Sie müssen nichts anderes einrichten, als die Cookie- und Authentifizierungs-Middleware in der Startup-Klasse so zu konfigurieren, wie Sie es bereits tun.

Wenn der Benutzer sich von App A aus angemeldet und eine andere App B geöffnet hat, muss er sich nicht erneut anmelden, da er die vorhandenen Cookies im Browser validieren kann. Es muss nur sich selbst authentifizieren, was es über den Rückkanal tun wird.

+0

Was meinst du mit: ... Es muss sich nur authentifizieren ...? – Jasper

+0

Ich meine, der Benutzer ist bereits autorisiert, da Cookies validieren, wenn Benutzer App A einloggt und App B öffnet, aber der Benutzer ist nicht authentifiziert auf dieser App B, die es über den Rückkanal tun wird, da es bereits Auth-Code hat. Der Identitätsserver ermöglicht Ihnen die einmalige Anmeldung. Der Benutzer muss sich nicht erneut für jede App anmelden. Das Zugriffstoken wäre jedoch für verschiedene Apps unterschiedlich. – JayDeeEss