Microsoft.AspNet.Authentication.OAuth
- Consente 3rd Identifiers parti (ad esempio Google, Facebook) per autenticare gli utenti per voi, risparmiando agli utenti il fastidio di registrazione.
- Consente altre applicazioni di utilizzare l'applicazione per l'autenticazione
Una volta che gli utenti sono autenticate da un terzo partito, il OWIN middle-ware legge i loro OAuth biscotto e crea un cookie specifico dominio basata sulle attestazioni . Finché il cookie è disponibile (presente, non scaduto e non corrotto) i tuoi utenti rimangono Autenticati.
An introduction to the ASP.NET 5 Generic OAuth Provider
Microsoft.AspNet.Authentication.OAuthBearer
Crea gettoni al portatore. Quando un utente accede a un punto finale (Web-API) o è autenticato da una terza parte, la middleware OWIN OWIN restituisce un token al portatore. Il token al portatore viene inviato con tutte le richieste di servizio per identificare i tuoi utenti al posto dei cookie.
In avvio
app.UseOAuthBearerAuthentication(options =>
{
options.Authority = "http://localhost:5000/oauth/";
options.Audience = "http://localhost:5000/oauth/resources";
options.TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKeys = new[] { new X509SecurityKey(cert) },
ValidateLifetime = false,
};
options.AutomaticAuthentication = true;
options.SecurityTokenValidators = new[]
{
new JwtSecurityTokenHandler()
};
});
portatore Gettoni vengono utilizzati nella creazione SPA (pagina singola applicazione) o per il fissaggio AJAX richieste.
L'autenticazione dei cookie è considerata adeguata per le richieste del server. Ma i punti finali di servizio (anche se non permettono C ross O RIGIN R eSource S Haring) sono più vulnerabili alle CSRF e XSS attacchi.
Molte applicazioni utilizzano entrambi:
Una pratica comune è quella di utilizzare cookie di autenticazione per le richieste di pagina e gettoni al portatore per AJAX richieste.
È necessario distinguere tra le risorse che utilizzano i cookie e le risorse che utilizzano i token.
In questo Stackoverflow answer, Matt DeKrey ha fatto un bel lavoro di delineare la sua realizzazione utilizzando
[Authorize("Bearer")]
Per controller o metodi che dovrebbero utilizzare portatore Gettoni piuttosto che la base [Authorize]
attributo cookie di standard.
Molte applicazioni si basano su cookie da soli:
Come vulnerabile è l'applicazione per CSRF attacchi quando basandosi su cookie? Questo è discutibile. Molti siti si basano solo sui cookie e non affrontano mai problemi. La risposta potrebbe dipendere più dal tuo livello di traffico e dalle esigenze di sicurezza.
Se stai sviluppando un sito per decine di migliaia di utenti, probabilmente sei sicuro di fare affidamento sui cookie.
Se stai servendo milioni di utenti o proteggi importanti dati finanziari, le tue chiamate asincrone dovrebbero fare affidamento su token al portatore.
Nota: Lei parla con autenticazione basata su form, vi consiglio vivamente di utilizzare Identità. Il framework si integra con OWIN per offrire entrambi i tipi di funzionalità.
Qual è l'utilizzo dell'identità del meccanismo predefinito? In ASP.NET 5 se dico solo app.UseIdentity() e uso l'attributo [Autorizza], tutto funziona correttamente, ma come faccio a sapere se utilizza l'autenticazione basata su cookie o token? –
@VladimirDjurdjevic, il valore predefinito è auth cookie. Ecco un buon post sull'implementazione dell'autorizzazione token http://stackoverflow.com/questions/29048122/token-based-authentication-in-asp-net-5-vnext –