Nous mettons en œuvre l'authentification unique [SSO] sur plusieurs applications, qui sont hébergées sur différents domaines et différents serveurs.
Maintenant, comme indiqué dans l'image, nous introduisons un serveur d'authentification qui interagit réellement avec LDAP et authentifie les utilisateurs. Les applications qui seront utilisées/parler à Authenticate Server sont hébergées sur différents serveurs et domaines.
pour l'authentification unique, je ne peux pas utiliser de variables de session, car il existe différents serveurs et différentes applications, différents domaines, un cookie de niveau domaine/variable de session n'est pas utile.
Je cherche une meilleure solution qui peut être utilisée pour SSO à travers eux. Une implémentation démontrée existe-t-elle? Si oui, veuillez le poster ou me diriger dans la bonne direction pour cela.
Vous pouvez y parvenir en faisant en sorte que toutes vos connexions se produisent sur le serveur d'authentification. Les autres applications peuvent communiquer avec le serveur d'authentification via un canal arrière. Le principe général est le suivant:
Maintenant, c'est là qu'intervient le bit SSO:
Il existe des implémentations existantes de cette méthode, par exemple CAS (Central Authentication Service). Notez que CAS est pris en charge hors de la boîte dans Spring Security . Je vous conseille de considérer l'utilisation d'une implémentation existante, car écrire la vôtre sera difficile. J'ai simplifié les choses dans ma réponse et il y a beaucoup de potentiel pour introduire des failles de sécurité si vous êtes nouveau dans ce domaine.
Je vous recommanderai de vérifier OAuth. C'est un bon protocole d'authentification et d'autorisation utilisé par plusieurs grandes organisations, notamment Facebook, Google, Windows Live et autres. Il peut avoir une courbe d'apprentissage initiale, mais c'est une solution de qualité de production.
Il possède également des bibliothèques pour Java, Ruby, PHP et une gamme d'autres langages de programmation.
Par exemple, les implémentations côté serveur suivantes sont disponibles pour Java.
Côté client Java sont également disponibles:
Veuillez vous référer ici pour plus de détails:
La plus grande question est de savoir comment vous implémentez l'authentification unique. De nombreuses offres open source et même propriétaires (IBM Tivoli) valent leur capacité de connexion unique inter-domaines. Ce serait le moyen le plus simple et le meilleur de mettre en œuvre un sso interdomaine. Vous pouvez configurer le serveur LDAP que vous utilisez dans le serveur sso que vous choisissez.
En prenant par exemple open sso, voici un article pour configurer l'authentification unique interdomaine http://docs.Oracle.com/cd/E19681-01/820-5816/aeabl/index.html
Pour configurer LDAP dans sso ouvert, http://docs.Oracle.com/cd/E19316-01/820-3886/ghtmw/index.html
La référence sur la question est présentée dans un diagramme soigné ici http://docs.Oracle.com/cd/E19575-01/820-3746/gipjl/index.html
Selon l'offre que vous utilisez, vous pouvez configurer l'authentification unique interdomaine.
Avec cela, votre diagramme ressemblera à ceci, avec le serveur d'authentification étant votre utilitaire pour interagir avec le serveur sso de votre choix.
Avoir un serveur d'authentification qui communique avec sso est un principe d'architecture solide. Je suggérerais de faire des appels pour s'authentifier comme points de terminaison REst qui pourraient être appelés via http à partir de différentes applications.
Vous ne pouvez pas utiliser Rest Service.
Vous pouvez utiliser ce que j'appelle un Refferer Url Authentication Supposons que vous ayez une application d'authentification en cours d'exécution sur www.AAAA.com Dans les applications, où vous souhaitez vous authentifier, you could have a filter which looks for a authenticated cookie in its domain else redirect to www.AAAA.com for authentication
Sur Successfull authentication
, vous pourriez pass the user profile information as encrypted GET / POST data back to the application