J'ai une installation Tomcat 7 avec oldApp.war et newApp.war déployée dessus. Les deux applications partagent les mêmes informations de connexion pour les utilisateurs de la base de données.
Je peux accéder aux applications en utilisant https://localhost/oldApp
et https:localhost/newApp
respectivement.
Mon oldApp est une application Spring MVC Java et lorsque l'utilisateur est connecté à oldApp, je souhaite disposer d'un lien qui le mènera dans newApp sans demander les informations d'identification.
Je veux savoir comment implémenter l'authentification unique pour le faire. De préférence, je ne souhaite utiliser aucun service externe pour gérer cela.
Merci d'avance.
Vous pouvez implémenter l'authentification unique de différentes manières:
SAML 2.0 comporte de nombreuses implémentations pour les rôles de fournisseur d'identité/de service.
Pour une liste d'implémentations IDP, je peux vous indiquer cette publication stackoverflow: https://stackoverflow.com/a/761774/126414
Si vous envisagez de mettre en place un fournisseur de services, il existe une extension Nice spring: http://static.springsource.org/spring-security/site/extensions/saml/index.html
Mise à jour: ses informations 2018 et ci-dessous sont obsolètes. Si vous démarrez une nouvelle application, utilisez un protocole d’identité fédérée tel que Open ID Connect et bénéficiez gratuitement de la connexion unique.
Il y a quelques approches que vous pouvez prendre:
Vous pouvez déployer le serveur CAS (qui n'est rien d'autre qu'une guerre) dans Tomcat et configurer le filtre de votre application Web en conséquence. Vous pouvez prendre l’aide de ce link .
J'ai réussi ceci avec la valve SSO de Tomcat:
Placez la vanne SSO dans l'élément hôte (localhost) du fichier server.xml
:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Valve className="org.Apache.catalina.authenticator.SingleSignOn" /> </Host>
Ajouter des utilisateurs et des rôles (par exemple, dans Tomcat_users.xml
):
<user username="user1" password="user1" roles="employee"/>
Dans l'élément web-app
de votre fichier apps web.xml
, ajoutez des contraintes de sécurité:
<security-constraint> <web-resource-collection> <web-resource-name>App name</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>employee</role-name> </auth-constraint></security-constraint><login-config> <auth-method>FORM</auth-method> <realm-name>file</realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config></login-config><security-role> <role-name>employee</role-name></security-role>
C'est tout. Maintenant, connectez-vous à l’une de vos applications et vous devriez être connecté à d’autres applications.
Bien sûr, vous ne devriez pas utiliser de mot de passe avion-texte en production, ceci est juste un exemple rapide. Vous devez envisager l'authentification Digest, ainsi que la configuration de SSL sur Tomcat.
J'espère que cela aidera quelqu'un!