Security OAuth2 Flows - klagan/learning GitHub Wiki

Grant types

Client is registered with authorisation server

A confidential client is a client that is capable of maintaining credentials and/or obtaining client authentication securely.

A public client is one that is not a confidential client.

A resource owner is an entity that provides credentials to access a protected resource. Both a client and an end user entity could be a resource owners.

Implicit grant

  • Public client - eg: SPA
  • The end user entity is the resource owner
  • Client is not authenticated
  • Authorisation returns access token
  • Access token is available through the front channel
  • AT

Client credential grant

  • Client is the resource owner
  • Machine to machine authentication
  • There is no end user entity
  • AT

Resource owner password credential grant

  • End user entity is the resource owner but the client has access to the resource owners user credential
  • Used when the client and authorisation server are trusted and/or developed by the same organisation
  • RT AT

Authorisation code grant

  • Makes use of back channels for minimum exposure of tokens
  • Returns an authorisation token which must be exchanged at the token endpoint

Hybrid grant

  • May be returned the authorisation code and either the id token or authorisation token or both

aad

⚠️ **GitHub.com Fallback** ⚠️