Annuaire OAuth2

De Wiki1000

Sommaire


Les annuaires OAuth2 sont des annuaires de gestion d'identités implémentant le protocole d'authentification OAuth2

De nombreux fournisseurs de service implémentent OAuth2 comme par exemple Google ou Microsoft LiveID

Les bénéfices de l'utilisation d'un annuaire OAuth2 sont les suivants :

  • Vous n'avez plus besoin de gérer les identités des utilisateurs.
  • Vos utilisateurs se connectent avec les identifiants du fournisseurs de l'annuaire.
  • Vos utilisateurs sont automatiquement connectés lorsqu'ils sont authentifiés sur le fournisseur de l'annuaire.

Vous devrez cependant déclarer explicitement les utilisateurs dans l'administration 1000 pour les autoriser.

Tip-20px.png Tip : Les annuaires OAuth sont le pendant dans le monde Web des annuaires d'Entreprise de type LDAP ou AD, ils prennent en charge la fonction authorisation mais pas la fonction autorisation.

Cas d'utilisation standards

Par exemple si vous mettez en oeuvre l'annuaire Google :

Lors de la première connexion d'un utilisateur au Service 1000

  • Il est redirigé sur la page de connexion Google
  • Il doit alors autoriser le Service 1000 à accéder à ses informations d'identification.
  • Il est ensuite redirigé sur le Service 1000
  • Il est connecté.

Lors des accès suivant au Service 1000:

  • Il est automatiquement connecté au Service 1000 sans passer par la page de connexion.

Si l'utilisateur révoque son autorisation dans la gestion de son compte Google :

  • Au prochain accès au Service 1000 il devra de nouveau se connecter et recommencer la phase d'autorisation.

Si l'administrateur du Service 1000 supprime ou désactive l'utilisateur :

  • Il ne pourra plus se connecter car bien que authentifié il ne sera pas autorisé.

Prés requis

La mise en oeuvre d'un annuaire OAuth2 nécessite que vous enregistriez votre Service 1000 auprès de l'annuaire OAuth2. Les informations mises en oeuvre au cours de cette étapes sont généralement :

  • Une URL de call back pointant sur votre Service 1000
  • Un identifiant ClientID
  • Un secret client associé à cet identifiant

L'URL de call back que vous fournissez à l'annuaire est une URL pointant sur votre Service 1000, bien que cela ne soit pas indispensable au protocole, cette URL doit généralement être publique. Si votre Service 1000 n'est pas public, vous pouvez mettre en oeuvre un serveur intermédiaire public se chargeant de la redirection.

Voici par exemple le code d'un service node.js réalisant la redirection nécessaire :

var express = require('express')
  , appPort = process.env['app_port'] || 3000
  , app = express();    
 
app.get('/redirect', function(req, res){
  if (req.query.code!='')
	res.redirect('https://'+req.query.host+'/server/'+req.query.service+'/sso_success.l1000?code='+req.query.code);     
  else
	res.redirect('https://'+req.query.host+'/server/'+req.query.service+'/sso_failure.l1000?error='+req.query.error);
});
 
app.listen(appPort);
console.log("Express server listening on port %d", appPort);

Mise en oeuvre

Créer une application oAuth2

Paramétrer l'annuaire dans la console d'administration

  • Le fournisseur existe
  • Le fournisseur n'existe pas


Autoriser les utilisateurs

  • Autorisation préalable
  • Autorisation à la demande

Multi-annuaires

Diagramme de séquence

OAuth2 Sequence Diagram.jpg

Outils personnels