Autenticazione per WebAPI (parte 2 – External Authentication Server e OAuth2)

Lo scenario tipico dell’autenticazione basata su token prevede l’esistenza oltre alla applicazione web anche di un authorization server o di un authentication server esterno all’applicazione stessa.

Scenario con server di Autenticazione Esterno

Per accedere ad un risorsa protetta l’utente deve includere nella richiesta un token che autorizza l’operazione richiesta. Il token viene generato dall’authorization server su richiesta dell’utente. In assenza del token l’applicazione web risponde con codice HTTP 401.

External authentication
Request flow with external authentication server

In questo scenario l’applicazione web utilizza il token per verificare l’identità dell’utente che ha fatto la richiesta e poi restituisce la risposta appropriata in base alla configurazione del proprio sistema di autorizzazione.

Scenario con Server di Autorizzazione e Protocollo OAuth2

Il protocollo OAuth2 (RFC 6749 )definisce le interazioni tra l’applicazione web ed il server di autorizzazione per determinare se l’utente è autorizzato ad accedere alla risorsa richiesta.

Lo standard OAuth2.0 utilizza una terminologia specifica:

    • Resource. Some piece of data that can be protected.
    • Resource server. The server that hosts the resource.
    • Resource owner. The entity that can grant permission to access a resource. (Typically the user.)
    • Client: The app that wants access to the resource.
    • Access token. A token that grants access to a resource.
    • Bearer token. A particular type of access token, with the property that anyone can use the token. In other words, a client doesn’t need a cryptographic key or other secret to use a bearer token. For that reason, bearer tokens should only be used over a HTTPS, and should have relatively short expiration times.
    • Authorization server. A server that gives out access tokens.
OAuth 2.0 Abstract Protocol Flow defined in RFC 6749

Solitamente i dettagli del protocollo sono dai middleware di autenticazione/autorizzazione e non sono visibili allo sviluppatore, che in questo modo deve solo di gestire l’access token includendolo nelle successive richieste.

Il protocollo OAuth prevede inoltre un refresh token da utilizzare per ottenere un nuovo access token quando quello precedente è scaduto senza chiedere all’utente di immettere nuovamente le proprie credenziali.

ASP.NET WebAPI e OAuth2.0

Nel template standard “WebAPI” incluso in Visual Studio a partire dalla versione 2013 l’applicazione web che viene creata è configurata in modo da svolgere contemporaneamente il ruolo di Authorizzation Server e di Resource Server. Questa configurazione può essere facilmente modificata abilitando l’utilizzo di servizi di autorizzazione esterni come ad esempio quelli forniti da Google, Facebook, Twitter, Auth0, … Ovviamente è anche possibile sviluppare e pubblicare un proprio authorizzation server che supporta il protocollo OAuth2 separato dal resource server.

token authentication with webapi

vedi tutorial:  Securing WebAPI  su MSDN.

 

 

 

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...