Open AUTHorization : autorisation ouverte/libre.
Autoriser un accès HTTP à ses ressources par une partie tierce, sans donner ses identifiants (credentials).
OAuth vise à :
OAuth 2.0 définit 4 rôles en déclinant le "serveur" de OAuth 1.0 en 2 rôles distincts:
Il existe également des spécialisations de OAuth 2.0 pour :
l'architecture client /serveur :
Pour permettre de déléguer l'autorisation à un service tiers (Google par exemple), OAuth 2.x ajoute un 4ᵉ rôle en permettant de séparer le rôle serveur de OAuth 1.x en :
sequenceDiagram Title OAuth 2.x worfklow Actor Resource Owner Resource Owner->>Resource Server: signup (username, password) Resource Owner->>Resource Server: upload (resource) Client->>Resource Server: signup (clientId, clientSharedSecret) Resource Owner->>Client: useMyResourceFrom (Server) Client->>Resource Server: initiate (realm,clientId,callback,hmacSha1Signature) Resource Server-->>Client: oauth_token,oauth_token_secret Client-->>Resource Owner: redirectTo (authorizationServer/authorize?oauth_token) Resource Owner->>Authorization Server: authorize (oauth_token) Authorization Server-->>Resource Owner: 401 need to sign Resource Owner->>Authorization Server: signin (username, password) Authorization Server-->>Resource Owner: Ok to share resource to Client? Resource Owner->>Authorization Server: yes Authorization Server-->>Resource Owner: redirect?client/ready?oauth_token&oauth_verifier Resource Owner->>Client: ready(oauth_token,oauth_verifier) Client->>Authorization Server: token(consumer_key,oauth_token,oauth_verifier,signature) Authorization Server-->>Client: ok(oauth_token,oauth_token_secret) Client->>Resource Server: getResource(realm,consumer_key,oauth_token,signature) Resource Server-->>Client: resource
OAuth 2.x définit également les formes possibles d'une autorisation donnée par le propriétaire de ressource :
Il existe également un mécanisme d'extensibilité pour ajouter d'autres formes d'autorisation.
Etendu par OpenID Connect en ajoutant des fonctionnalités standards d'identification.