Java SSO: l'authentification Kerberos sur un annuaire Active Directory
Je suis encore à essayer de trouver un basé sur Java solution de SSO (en cours d'exécution sur *nix), que je peux utiliser sur JBoss pour l'autoriser à l'encontre d'un Active Directory/contrôleur de domaine. J'ai d'abord essayé de le faire via NTLM, mais il a abandonné parce qu'il ne sera pas pris en charge sur Windows Server >= 2008.
Donc je suis en train de mettre en œuvre ce à l'aide de Kerberos, mais il semble impossible de trouver une bonne/solution de travail. Merci de me pointer dans la bonne direction en expliquant comment mettre en place une telle configuration, comment valider l'encontre de l'Active Directory et/ou de contrôleur de domaine dans l'ordre:
- savoir si le compte est valide et
- récupérer la liste des groupes de l'utilisateur
Toute aide est très appréciée!
Mise à JOUR
Je suis en train de travailler sur une solution à l'aide de jcifs-ext-0.9.4 et jcifs-krb5-1.3.12. J'ai créé l'web.xml comme décrit ci-dessous:
<web-app>
<!-- servlet /servlet-mapping /welcome-file-list skipped -->
<filter>
<filter-name>auth</filter-name>
<filter-class>jcifs.http.AuthenticationFilter</filter-class>
<init-param>
<param-name>java.security.auth.login.config</param-name>
<param-value>/WEB-INF/login.conf</param-value>
</init-param>
<init-param>
<param-name>jcifs.spnego.servicePrincipal</param-name>
<param-value>HTTP/[email protected]</param-value>
</init-param>
<init-param>
<param-name>jcifs.spnego.servicePassword</param-name>
<param-value>supersecret</param-value>
</init-param>
<init-param>
<param-name>sun.security.krb5.debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>java.security.krb5.realm</param-name>
<param-value>mydomain.com</param-value>
</init-param>
<init-param>
<param-name>java.security.krb5.kdc</param-name>
<param-value>testdom01.mydomain.com </param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.domain</param-name>
<param-value>TESTDOMAIN</param-value>
</init-param>
<init-param>
<param-name>jcifs.http.enableNegotiate</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>jcifs.http.basicRealm</param-name>
<param-value>mydomain.com</param-value>
</init-param>
<init-param>
<param-name>jcifs.http.domainController</param-name>
<param-value>testdom01.mydomain.com</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>auth</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Ce qui conduit à la suivante stacktrace si vous essayez d'accéder à l'application:
2010-07-22 15:53:10,588 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/google].[default]] Servlet.service() for servlet default threw exception
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at jcifs.ntlmssp.Type2Message.toByteArray(Type2Message.java:261)
at jcifs.spnego.Authentication.processNtlm(Authentication.java:265)
at jcifs.spnego.Authentication.process(Authentication.java:233)
at jcifs.http.Negotiate.authenticate(Negotiate.java:46)
at jcifs.http.AuthenticationFilter.doFilter(AuthenticationFilter.java:192)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:619)
Toute aide est appréciée.
OriginalL'auteur MrG | 2010-06-25
Vous devez vous connecter pour publier un commentaire.
Pour ce faire, vous avez besoin pour utiliser LDAP. Heureusement pour vous, Java dispose d'une base solide pour Kerberos et LDAP. La procédure détaillée est à http://java.sun.com/products/jndi/tutorial/ldap/security/gssapi.html .
Vue d'ensemble des étapes de:
- Authentification de Kerberos
- Utiliser Kerberos pour assumer l'identité de l'utilisateur
- Effectuer GSSAPI lier à Active Directory serveur LDAP
- Récupérer la liste de groupes de plus de LDAP
OriginalL'auteur Borealid
Vous pouvez utiliser Gaufre. C'est gratuit et prend en charge Negotiate, NTLM et Kerberos. Vous pouvez également consulter la liste des groupes de l'utilisateur.
"GAUFRE - Authentification Windows Cadre Fonctionnel (Light Edition) est un natif du C# et Java bibliothèque qui fait tout l'authentification Windows (Negotiate, NTLM et Kerberos)."
OriginalL'auteur Soundlink
Nous utilisons Jespa pour gérer l'authentification NTLM, nous l'avons testé sur les deux Tomcat & Glassfish en cours d'exécution sur Solaris, c'est à dire & Firefox sont tous deux pris en charge, et apprently Chrome prend désormais en charge l'authentification NTLM. Vous aurez besoin d'une licence pour un usage commercial, mais je serais certainement le recommander.
OriginalL'auteur Jon Freedman
J'ai commencé la rédaction d'un article que j'ai expérimenté avec kerberos et JBoss, le plan est d'avoir un guide complet pour les débutants à l'installation et à l'utilisation de kerberos à l'aide de JBoss. Je ne dis pas que c'est une réponse complète, mais si vous posez des questions je peux essayer d'y répondre et de les ajouter sur le blog.
l'article
OriginalL'auteur Richard Johnson
Si vous souhaitez déboguer le kerberos, ANNONCE de configuration sur votre ordinateur vous pouvez télécharger l'application à partir du lien suivant.
https://github.com/shubham49/debugSSO
Téléchargez l'application et la déployer sur le serveur weblogic.
Après le déploiement d'ouvrir la page d'accueil et vous serez face à différents tests pour déboguer le fichier de configuration.
OriginalL'auteur shubham