Je me demande si je devrais utiliser le protocole CAS ou OAuth + un fournisseur d'authentification pour la connexion unique.
Exemple de scénario:
- Un utilisateur tente d'accéder à une ressource protégée, mais n'est pas authentifié.
- L'application redirige l'utilisateur vers le serveur SSO.
- S'il est authentifié, l'utilisateur obtient un jeton du serveur SSO.
- Le SSO redirige vers l'application d'origine.
- L'application d'origine vérifie le jeton par rapport au serveur SSO.
- Si le jeton est correct, l'accès sera autorisé et l'application connaît l'identifiant de l'utilisateur.
- L'utilisateur effectue une déconnexion et est déconnecté de toutes les applications connectées en même temps (déconnexion unique).
Autant que je sache, c'est exactement ce pour quoi le CAS a été inventé. Les clients CAS doivent implémenter le protocole CAS pour utiliser le service d'authentification. Maintenant, je me demande comment utiliser CAS ou OAuth sur le site client (consommateur). OAuth remplace-t-il cette partie de CAS? Faut-il privilégier OAuth en tant que nouvelle norme de facto? Existe-t-il un remplacement facile à utiliser (pas Sun OpenSSO!) Pour la partie authentification de CAS prenant en charge différentes méthodes telles que nom d'utilisateur / mot de passe, OpenID, certifactes TLS ...?
Le contexte:
- Différentes applications doivent s'appuyer sur l'authentification du serveur SSO et doivent utiliser quelque chose de semblable à une session.
- Les applications peuvent être des applications Web GUI ou des services (REST).
- Le serveur SSO doit fournir un ID utilisateur, ce qui est nécessaire pour obtenir plus d'informations sur l'utilisateur, telles que les rôles, le courrier électronique, etc., à partir d'une banque d'informations utilisateur centrale.
- La déconnexion unique devrait être possible.
- La plupart des clients sont écrits en Java ou PHP.
Je viens de découvrir WRAP , qui pourrait devenir le successeur d'OAuth. Il s'agit d'un nouveau protocole spécifié par Microsoft, Google et Yahoo.
Addenda
J'ai appris qu'OAuth n'était pas conçu pour l'authentification, même s'il pouvait être utilisé pour implémenter SSO, mais uniquement avec un service SSO comme OpenID.
OpenID me semble être le "nouveau CAS". CAS a quelques fonctionnalités qui manquent à OpenID (comme la déconnexion unique), mais il ne devrait pas être trop difficile d'ajouter les pièces manquantes dans un scénario particulier. Je pense qu'OpenID est largement accepté et qu'il est préférable d'intégrer OpenID dans des applications ou des serveurs d'applications. Je sais que CAS prend également en charge OpenID, mais je pense que CAS est inutile avec OpenID.