Todavía estoy tratando de encontrar una solución basada en Java para la SSO (que se ejecuta en sistemas *nix), que puedo usar en JBoss para autorizar contra un Active Directory/controlador de dominio. Inicialmente probé a hacerlo a través de NTLM, pero renunció porque no se admite en Windows Server >= 2008.

Por lo tanto estoy tratando de implementar esta usando Kerberos, pero parece imposible encontrar un correcto/solución de trabajo. Por favor, me apunte en la dirección correcta que explica cómo configurar una configuración de ese tipo, cómo validar contra el Active Directory y/o controlador de dominio con el fin de:

  1. averiguar si la cuenta es válida y
  2. recuperar la lista de grupo del usuario

Cualquier ayuda es muy apreciada.


ACTUALIZACIÓN

Estoy trabajando en una solución con jcifs-ext-0.9.4 y jcifs-krb5-1.3.12. Me juego hasta la web.xml como se describe a continuación:

<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>

Esto nos lleva a la siguiente stacktrace si al intentar acceder a la aplicación:

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)

Cualquier ayuda es muy apreciada.

OriginalEl autor MrG | 2010-06-25

5 Comentarios

  1. 6

    Para hacer esto, usted realmente necesita para utilizar LDAP. Por suerte para usted, Java tiene un sólido apoyo para Kerberos y LDAP. El procedimiento detallado se describe en http://java.sun.com/products/jndi/tutorial/ldap/security/gssapi.html .

    Resumen de los pasos:
    Autenticación Kerberos
    – Uso de Kerberos para asumir la identidad del usuario
    – Realizar GSSAPI se unen a LDAP de Active Directory del servidor
    – Recuperar la lista de grupos de más de LDAP

    ¿Por qué esto obtener un downvote? Kerberos no contiene una lista de grupos del usuario!

    OriginalEl autor Borealid

  2. 1

    Puede utilizar Waffle. Es gratis y compatible Negociar, NTLM y Kerberos. También puede consultar la lista de grupo del usuario con ella.

    «WAFFLE – Autenticación de Windows Marco Funcional (Light Edition) es un nativo de Java y C# biblioteca que hace de todo, la autenticación de Windows (Negociar, NTLM y Kerberos).»

    Waffle lamentablemente utiliza la api de win32 y sólo se ejecuta en Windows

    OriginalEl autor Soundlink

  3. 0

    Utilizamos Jespa para manejar la autenticación NTLM, que hemos probado en ambos Tomcat & Glassfish se ejecuta en Solaris, es decir, & Firefox son compatibles, y apprently Chrome ahora admite NTLM. Usted necesitará una licencia para uso comercial, aunque, pero me gustaría definitivamente lo recomiendo.

    problema con Jespa para mí, es que asume que Java EE y el uso de marcos de trabajo como Jugar hace inutilizable para mí

    OriginalEl autor Jon Freedman

  4. 0

    Empecé a escribir un artículo como experimenté con kerberos y JBoss, el plan es tener una guía completa para principiantes para la configuración y el uso de kerberos con JBoss. No estoy diciendo que es una respuesta completa, pero si usted le pregunta puedo tratar de responder a ellos y agregarlos al blog.

    el artículo

    OriginalEl autor Richard Johnson

  5. 0

    Si quieres depurar la kerberos, el ANUNCIO de la configuración de su máquina, a continuación, puede descargar la aplicación desde el siguiente enlace.
    https://github.com/shubham49/debugSSO
    Descargar la aplicación e instalarla en el servidor weblogic.
    Después de la implementación abrir la página de inicio y usted se encontrará con diferentes pruebas para depurar la configuración.

    OriginalEl autor shubham

Dejar respuesta

Please enter your comment!
Please enter your name here