2015-05-01 5 views
9

Ich habe den IdentityServer v3 verwendet, jetzt möchte ich, dass eine Website sowohl der Identity-Host als auch der Web-API-Host ist.UseIdentityServerBearerTokenAuthentication funktioniert nicht für IdentityServer3

Die Berechtigungsoption wird nicht zur Validierung des Tokens verwendet. Ich habe den Token-Endpunkt verifiziert und der Token-Validierungsendpunkt funktioniert wie erwartet (ich kann ein Token mithilfe von Postman abrufen und validieren). Ich habe das [Authorize] -Attribut verwendet, um meine Controller-Methode zu dekorieren. Die vollständige Protokollierung ist auf dem IdentityServer aktiviert, es wird nichts protokolliert, wenn eine API-Anforderung mit dem Kopfzeilennamen "Authorization" mit dem Wert "Bearer mytokenhere" erstellt wird.

Dies ist eine vNext-Website auf ASP.NET 5 mit dem Visual Studio 2015 CTP6.

 app.UseMvc(); 

     var certFile = AppDomain.CurrentDomain.BaseDirectory + "\\myawesomesite.pfx"; 

     app.Map("/core", core => 
     { 
      var factory = InMemoryFactory.Create(
          users: Users.Get(), 
          clients: Clients.Get(), 
          scopes: Scopes.Get()); 

      var idsrvOptions = new IdentityServerOptions 
      { 
       SiteName = "Lektieplan", 
       Factory = factory, 
       RequireSsl = false, 
       SigningCertificate = new X509Certificate2(certFile, "lektieplan"), 
       CorsPolicy = CorsPolicy.AllowAll, 
       LoggingOptions = new LoggingOptions { EnableWebApiDiagnostics = true,EnableHttpLogging = true, IncludeSensitiveDataInLogs = true, WebApiDiagnosticsIsVerbose = true } 
      }; 

      core.UseIdentityServer(idsrvOptions); 
     }); 

     app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions 
     { 
      Authority = "http://localhost:57540/core", 
      RequiredScopes = new[] { "api1" }, 
     }); 

Und mein project.json

Meine Abhängigkeiten:

"Microsoft.AspNet.Server.IIS": "1.0.0-beta3", 
    "Microsoft.AspNet.Mvc": "6.0.0-beta3", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta3", 
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta3", 
    "Thinktecture.IdentityServer3": "1.3.0.0", 
    "Microsoft.AspNet.Owin": "1.0.0.0-beta3", 
    "Microsoft.AspNet.Security.DataProtection": "1.0.0.0-beta3", 
    "Thinktecture.IdentityServer3.AccessTokenValidation": "1.2.2", 
    "Autofac": "4.0.0-alpha1", 
    "log4net": "2.0.3" 

ich mir scheint, dass einige der zur Verfügung gestellten Proben aufgrund eines Cookies in Ihrem Browser Option funktioniert. Ich möchte die Cookies nicht verwenden.

+1

Ich denke, die OWIN-Middleware für die Authentifizierung Konflikte mit der/Core-OWIN-Middleware, irgendwelche Hinweise, wie das zu debuggen? – Jacee

+2

irgendwelche neuigkeiten? Funktioniert es jetzt? Ich möchte das Gleiche tun. – dknaack

Antwort

3

Ist UseIdentityServerBearerTokenAuthentication Ihr einziger Auth-Typ? Haben Sie irgendwelche Filter für MVC definiert?

Ich würde versuchen, die Apps in separate Katana-Pipelines zu teilen, so dass sie überhaupt nicht in Konflikt geraten.

Pseudo:

app.Map("/core", a => a.UseIdsrv()); 
app.Map("/somethingweb", a => a.UseMvc()); 
app.Map("/api", a => { 
    a.UseBearerTokenAuth(); 
    a.UseWebApi(); //or Mvc from now on, with v5 
}); 

Erraten Sie würden cookieauth zu diesem mvc Pipeline als auch hinzufügen müssen, je nachdem, was Sie erreichen wollen.

Verwandte Themen