2015-05-01 16 views
9

Ho utilizzato IdentityServer v3, ora voglio che un sito Web sia l'host di identità e l'host di web api.UseIdentityServerBearerTokenAuthentication non funziona per IdentityServer3

L'opzione di autorizzazione non viene utilizzata per convalidare il token. Ho verificato l'endpoint del token e l'endpoint di convalida del token funziona come previsto (posso ottenere e convalidare un token usando il postino). Ho usato l'attributo [Autorizza] per decorare il mio metodo di controllo. La registrazione completa è abilitata su IdentityServer, non viene registrato nulla quando si effettua una richiesta API con il nome dell'intestazione "Autorizzazione" con il valore "Bearer mytokenhere".

Questo è un sito Web vNext su ASP.NET 5 che utilizza 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" }, 
     }); 

E il mio project.json

mie dipendenze:

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

ho mi sembra che alcuni dei campioni forniti funziona a causa di una scelta basata biscotto. Non voglio usare i cookie.

+1

Penso che il middleware owin per l'autenticazione sia in conflitto con il middleware/core di owin, qualche suggerimento su come eseguire il debug di questo? – Jacee

+2

ci sono novità? Funziona adesso? Voglio fare lo stesso. – dknaack

risposta

3

Is UseIdentityServerBearerTokenAuthentication è l'unico tipo di autenticazione? Avete filtri definiti per MVC?

Proverei a suddividere le app in katana separate, in modo che non entrino in conflitto.

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

indovinare avrebbe bisogno di aggiungere cookieauth a quel gasdotto MVC pure, a seconda di ciò che si vuole raggiungere.

Problemi correlati