Protocols Flashcards
Cos’è OAuth2 ?
Framework che da la possibilità ad un applicazioni di terze parti l’accesso ad un servizio HTTP; questo per conto di un “resource owner” orchestrando un processo di approvazione tra l’owner e il servizio HTTP, sia permettendo l’accesso al servizio web per conto proprio.
OAuth2 è un protocollo di autenticazione?
No, è un protocollo di autorizzazione
Cos’è un Access Token di OAuth2?
Stringa che rappresenta la facoltà di accesso ad un risorsa per conto del resource owner. Esso è sempre dotato di expiration date.
Qual è il formato di un Access token di Oauth2?
Il framework non stabilisce esattamente come il token debba essere costituito. Uno dei formati più utilizzati è il JSON Web Token (JWT)
Come è possibile includere un OAuth2 token in una richiesta ad un HTTP service?
- Nell’Header HTTP, secondo il formato Authorization: Bearer TOKEN. Dove con bearer si intende che chiunque presenta quel token ha il diritto ad usarlo.
- Nel body di una richiesta HTTP.
Cos’è un Refresh Token di OAuth2?
Token quale da il diritto di rinnovare un access token. Normalmente è caratterizzato da una durata maggiore rispetto ad una access token.
Anche in questo caso il formato non è ben definito, quello che però deve indicare è:
- Access token
- refresh token
- scope
e altri campi.
Quali sono i ruoli previsti dal framework OAuth2?
- Resource Owner: entità che dispone di una risorsa web e che ne concede l’accesso.
- Client: Risorsa che in possesso di un Access Token o Authentication Token, attraverso le API di un messe a disposizione da un HTTP Service, richiede l’accesso alle risorse di un owner.
- Authorization server: entità incaricata di raccogliere il consenso di accesso dell’utente a valle di un autenticazione di quest’ultimo operazione effettuata mediante l’esposizione di un endpoint di autenticazione ed emettere un access token sempre mediante un apposito endpoint e.g. /token
- Http Service : server responsabile di esporre un API per l’accesso alle risorse e accogliere l’access token del client, quale deve essere posto in un processo di validazione.
Cos’è un Authorization Code in OAuth2?
Codice di Autorizzazione generato dall’authorization server il quale è destinato al client. Esso, insieme ad altre informazioni quali:
- client_id
- secret
- grant_type
viene utilizzato per richiedere una access token.
Cosa sono i Grants in OAuth2?
Insieme di step che il client deve eseguire effettuare l’accesso alla risorsa.
Esistono diversi tipi di grant:
- Authorizaton Code Grant: Il client, presenta l’authorization code, client_id e secret per recuperare l’access token
- Client Credentials Grant type: Utilizzato per autorizzazioni service-to-serivce e richiede che il client fornisca all’auth server semplicemente: client_id e secret
-Refresth token grant: rigeneriamo un token a partire da un refresh token
- Implicint Grant: il token viene restituito al client direttamente come parametro della callback URI oppure come un form di risposta. Il primo caso è deprecato per ovvi motivi.
Come funziona OAuth2 in modalità Autorization Code Grant?
Resource Owner = RO
Client = C
Authentication Server = AS
Resource Server = RS
- RO > C : resource access
- C > RO : client_id, link=callback uri, scope, state
- RO > AS: follow the redirect
- RO > AS: autenticate an accept resource access
- AS > RO: authentication_code, state
- RO > C : authentication_code, state
- C > AS: authentication_code, client_id, client_secret, grant_type
- AS > C : access_token, refresh_token
- C > RS: authorization: Bearer access_token
- RS > C: resource
Il protocollo non definisce come garantire l’autenticità del token, un modo per farlo è mediante crittografia asimmetrica, in cui la AS, firma il token JWT con una chiave privata, il RS valida la firma mediante la chiave pubblica e ricalcola l’hash.