Authentification unique [SSO] sur différents domaines à l'aide de Java


Nous implémentons l'authentification unique [SSO] sur plusieurs applications, qui sont hébergées sur différents domaines et différents serveurs.

entrez la description de l'image ici

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 pour authentifier le serveur sont hébergées sur différents serveurs et domaines.

Pour SSO, je ne peux pas utiliser de variables de session, car il y en a différents serveurs et différentes applications, différents domaines, une variable cookie / session au niveau du domaine n'est pas utile.

Je cherche une meilleure solution qui peut être utilisée pour l'authentification unique à travers eux. Toute démonstration de la mise en œuvre est existant? Si oui, veuillez le poster ou me diriger dans la bonne direction pour cela.

Author: Reddy, 2013-08-08

5 answers

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:

  1. L'utilisateur accède à l'application 1.
  2. L'application 1 a besoin que l'utilisateur se connecte, elle envoie donc un jeton au serveur d'authentification via le canal arrière. L'application 1 redirige ensuite l'utilisateur vers la page de connexion sur le serveur d'authentification avec le jeton comme paramètre sur la demande.
  3. Utilisateur connecte auth server. Auth Server définit un cookie, signale le jeton comme authentifié et y associe les détails de l'utilisateur. Le serveur d'authentification redirige ensuite l'utilisateur vers l'application 1.
  4. L'application 1 reçoit la demande de l'utilisateur et appelle le serveur d'authentification sur le canal arrière pour vérifier si le jeton est OK. Réponse du serveur d'authentification avec les détails de l'utilisateur.
  5. L'application 1 sait maintenant que l'utilisateur est autorisé et dispose de quelques informations utilisateur de base.

Maintenant, c'est là que vient le bit SSO dans:

  1. L'utilisateur accède à l'application 2.
  2. L'application 2 a besoin que l'utilisateur se connecte, elle envoie donc un jeton au serveur d'authentification via le canal arrière. L'application 2 redirige ensuite l'utilisateur vers la page de connexion sur le serveur d'authentification avec le jeton comme paramètre sur la demande.
  3. Auth server voit qu'il existe un cookie de connexion valide, il peut donc dire que l'utilisateur est déjà authentifié et sait qui il est. Le serveur d'authentification signale le jeton comme authentifié et associe l'utilisateur les détails avec elle. Le serveur d'authentification redirige ensuite l'utilisateur vers l'application 2.
  4. L'application 2 reçoit la demande de l'utilisateur et appelle le serveur d'authentification sur le canal arrière pour vérifier si le jeton est OK. Réponse du serveur d'authentification avec les détails de l'utilisateur.
  5. L'application 2 sait maintenant que l'utilisateur est autorisé et dispose de quelques informations utilisateur de base.

Il existe quelques implémentations existantes de cette méthode, par exemple CAS (Central Authentication Service). Notez que CAS est pris en charge à partir du boîte dans Sécurité de ressort . Je vous conseille d'utiliser 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.

 42
Author: Qwerky, 2017-06-21 10:26:10

Je vais vous recommander 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é production.

Il a é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.

  • Apache Amber (projet 22)
  • Sécurité de printemps pour OAuth
  • Serveur d'autorisation d'api (v2-31)
  • Cadre de Restlet (projet 30)
  • Apache CXF

Les bibliothèques Java côté client suivantes sont également disponibles:

  • Apache Amber (projet 22)
  • Printemps social
  • Sécurité de printemps pour OAuth
  • Cadre de Restlet (projet 30)

Veuillez vous référer ici pour plus de détails:

 3
Author: Gursev Kalra, 2013-08-16 14:40:37

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) valant leur sel offrent une fonctionnalité d'authentification unique interdomaine. Ce serait le moyen le plus simple et le meilleur d'implémenter l'authentification unique inter-domaine. Vous pouvez configurer le serveur LDAP que vous utilisez dans le serveur sso de votre choix.

En prenant par exemple open sso, voici un article pour configurer l'authentification unique inter-domaine http://docs.oracle.com/cd/E19681-01/820-5816/aeabl/index.html

Pour configurer LDAP dans open sso, 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 inter-domaine.

Avec ceci, votre diagramme ressemblera à ceci, avec le auth server é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 sonore. Je suggérerais de faire des appels pour s'authentifier en tant que points de terminaison REst qui pourraient être appelés via http à partir de différentes applications.

Authentification unique interdomaine

 1
Author: Ravi, 2013-08-14 21:56:46

Vous ne pouvez pas utiliser le service Rest .

Vous pouvez utiliser ce que j'appelle un Refferer Url d'Authentification Supposons que vous ayez une application d'authentification en cours d'exécution 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

 0
Author: Sudhakar, 2013-08-08 09:13:26

Depuis que j'ai construit une application Java, je cherche une solution SSO pour cela. J'ai trouvé un connecteur Java SAML gratuit à l'aide duquel vous pouvez réaliser une authentification unique dans des applications basées sur Java construites à l'aide de n'importe quel framework java.

Voici le lien vers elle - https://plugins.miniorange.com/java-single-sign-on-sso-connector

 -1
Author: Nikhil Badgu, 2020-01-20 11:22:49