2015-05-01 18 views
9

Użyłem serwera IdentityServer v3, teraz chcę, aby jedna witryna była zarówno hostem tożsamości, jak i hostem web api.UseIdentityServerBearerTokenAuthentication nie działa dla IdentityServer3

Opcja autoryzacji nie służy do sprawdzania tokena. Zweryfikowałem punkt końcowy tokenu, a punkt końcowy sprawdzania poprawności tokena działa zgodnie z oczekiwaniami (mogę uzyskać i zweryfikować token za pomocą listonosza). Użyłem atrybutu [Authorize], aby udekorować moją metodę kontrolera. Pełne logowanie jest włączone na serwerze IdentityServer, nic nie jest rejestrowane podczas wysyłania żądania api z nazwą nagłówka "Autoryzacja" z wartością taką jak "Na okaziciela mytokenhere".

To jest strona vNext na ASP.NET 5 przy użyciu CTP6 programu Visual Studio 2015.

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

A moja project.json

Moi zależności:

"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" 

I wydaje mi się, że niektóre z dostarczonych próbek działa z powodu opcji opartego na cookie. Nie chcę używać plików cookie.

+1

Sądzę, że oprogramowanie pośredniczące owin do uwierzytelniania konfliktów z oprogramowaniem pośredniczącym/core owin, jakikolwiek sposób debugowania tego? – Jacee

+2

jakieś wiadomości? Czy to działa teraz? Chcę zrobić to samo. – dknaack

Odpowiedz

3

Czy UseIdentityServerBearerTokenAuthentication to jedyny typ uwierzytelnienia? Czy masz jakieś filtry zdefiniowane dla MVC?

Próbowałbym podzielić aplikacje na osobne potoki katany, aby nie powodowały żadnych konfliktów.

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

zgadywania należałoby dodać do tego cookieauth mvc rurociągu, a także, w zależności od tego, co chcesz osiągnąć.

Powiązane problemy