OAUTH est un protocole d'autorisation, il a pour but de fournir un jeton d'accès à une ressource demandée. Première partie, présentation générale.
oauth securite authorization

OAUTH est un protocole d’autorisation, il a pour but de fournir un jeton d’accès à une ressource demandée. Il ne faut pas confondre identification qui a pour but d’identifier un utilisateur auprès d’un système, et autorisation qui a pour but, une fois l’identification passée, d’obtenir des droits sur celui-ci.

OAUTH 2.0 est :

OAUTH 2.0 est un protocole très utilisé dans le domaine des applications sociales :

Glossaire

Quelques définitions avant de commencer :

Flux d’autorisation (Grant Types)

Afin de fournir un jeton d’accès, OAUTH utilise un certains nombre de workflows. Il existe cinq workflows officiels.

Autorisation par code

Le workflow d’autorisation par code (authorization_code) permet à un client (logiciel), d’obtenir un jeton d’accès à la ressource demandée en deux temps.

C’est le dispositif le plus utilisé dans les applications web. Vous avez certainement déjà utilisé ce workflow lors d’une authentification sur un site à l’aide Facebook par exemple.

Le principe est d’utiliser une identité hébergée par un site tiers (authorisation server), pour obtenir un code d’autorisation utilisable par le site demandant l’accès. Cette étape est souvent accompagnée d’un écran de confirmation d’accès (authorization code). Ce code est alors récupéré par le site demandeur pour obtenir le jeton d’accès, prouvant l’autorisation d’un utilisateur.

Autorisation implicite

Ce workflow (implicit) est une variante du précédent, avec un seul point de différence : l’accès est automatiquement confirmé, pas d’interaction utilisateur.

Ce workflow n’est pas conseillé, il est reconnu comme n’étant pas sécurisé puisqu’il y a des actions de validations implicites.

Identification client

Le workflow (client_credentials) est un peu particulier. Il permet d’identifier un client UNIQUEMENT. Très pratique pour autoriser les communications inter-serveurs.

Identification utilisateur via client

Le workflow (password) est un worflow permettant d’obtenir un jeton d’accès utilisateur. Ce jeton est une identification d’un client et d’un utilisateur.

Vous trouverez ce type de workflow dans les applications embarquées (mobiles, applications lourdes).

Assertion

Ce dernier workflow (assertion) est très particulier puisqu’il permet d’utiliser des jetons dans d’autres formats (SAML, JWT).

L’OAUTH 2.0 JWT Token Bearer est une extension du protocole, qui a pour but d’utiliser un jeton d’accès préforgé au format Json Web Token par le client, et validé par le serveur. Ce workflow permet de réduire les échanges puisque le jeton JWT contient toute l’information échangée.

Conclusion

Dans le prochaine article, je partlerai d’une implémentation particulière qui utilise OAUTH pour effectuer des authentifications en milieux distribué UAA.

Autres articles de la série :

Retours sur expérience sur la réalisation d'une solution de CTI
cyber securite bigdata

Parce qu'il n'est pas nécessaire d'installer en root les binaires produits par les dépendances Node.js.
linux nodejs npm securite

Mise en place d'une blockchain privée en utilisant le protocole Ethereum
securite dev blockchain ethereum