cancel
Showing results for 
Search instead for 
Did you mean: 

Alfresco LDAP Kerberos

jmruiza
Champ in-the-making
Champ in-the-making
Hola a todos.
Llevo muy poco tiempo con Alfresco y necesito integrar LDAP con Alfresco.
La versión que se ha elegido es la Labs 3b (Full Setup) que incluye Tomcat, JDK, …
Alfresco está montado sobre un equipo con Windows XP (ServidorALF) y el Active Directory se encuentra en otra máquina con Windows 2003 (ServidorAD). Ambos en el mismo dominio ("XXX.Local")
Llevo varios días documentándome sobre el tema y probando, pero no he encontrado la forma de que funcione.
Conseguí instalar correctamente Alfresco + CIFS, pero al intentar la integración con LDAP (siguiendo los pasos que se indican en: http://wiki.alfresco.com/wiki/Configuring_the_CIFS_and_web_servers_for_Kerberos/AD_integration ) nada de nada.
La verdad es que no se qué he podido haber hecho mal.
Basándome en las indicaciones del post anterior mis pasos fueron:
Primero debo decir que todas las operaciones que se realizaron en el equipo con AD se hicieron mediante conexión a escritorio remoto (no se si esto puede ser una fuente de problemas, como pasa por ejemplo al instalar SQL SERVER 2005, que ha de hacerse directamente sobre la propia máquina)
1) Crear 2 cuentas de usuario en ServidorAD. "Alfresco CIFS" y "Alfresco HTTP" tal y como indica en el documento.
2) Crear las key tables para los 2 usuarios creados en el paso anterior con la herramienta ktpass:
ktpass -princ cifs/servidorAlf.xxx.local@XXX.LOCAL> -pass ClaveUsrCifs -mapuser xxx.local\alfrescocifs
-crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -out c:\temp\alfrescocifs.keytab
y
ktpass -princ HTTP/servidorAlf.xxx.local.@XXX.LOCAL -pass ClaveUsrHttp -mapuser xxx.local\alfrescohttp
-crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -out c:\temp\alfrescohttp.keytab
3) Crear los SPN para los 2 usuarios creados usando la herramienta setspn:
setspn -a cifs/servidorAlf alfrescocifs
setspn -a cifs/servidorAlf.xxx.local alfrescocifs
y
setspn -a http/servidorAlf alfrescohttp
setspn -a http/servidorAlf.xxx.local alfrescohttp
4) Copiar los key tables a ServidorAlf (Realmente los moví: los borré de ServidorAD).
5) Crear un fichero llamado krb5.ini de la siguiente forma:
[libdefaults]
default_realm = XXX.LOCAL

[realms]
XXX.LOCAL = {
  kdc = servidorAD.XXX.LOCAL
  admin_server = servidorAD.XXX.LOCAL
  default_domain = XXX.LOCAL
}

[domain_realm]
xxx.local = XXX.LOCAL
.xxx.local = XXX.LOCAL
Este fichero lo almaceno en ServidorAD (dentro de C:\WINDOWS. Tambien me cree una carpeta "C:\WINNT" y lo copié aquí también, por si fallaba por no coincidir con la ruta del documento, pero nada)
6) Crear un fichero en java.login.config  llamado java.login.config (En ServidorAD) de esta forma:
AlfrescoCIFS {
   com.sun.security.auth.module.Krb5LoginModule required
   storeKey=true
   useKeyTab=true
   keyTab="C:/etc/alfrescocifs.keytab"
   principal="cifs/servidorAlf.xxx.local";
};

AlfrescoHTTP {
   com.sun.security.auth.module.Krb5LoginModule required
   storeKey=true
   useKeyTab=true
   keyTab="C:/etc/alfrescohttp.keytab"
   principal="HTTP/servidorAlf.xxx.local>";
};

7) Añadir en el fichero de configuración de java (java.security) la siguiente línea (en ServidorAD)
login.config.url.1=file:${java.home}/lib/security/java.login.config
😎 configurar el servidor Cifs para kerberos (file-servers.xml, en ServidorAlf)
     <authenticator type="enterprise">
      <KDC>ServidorAD.XXX.LOCAL</KDC>
      <Realm>XXX.LOCAL</Realm>
      <Password>ClaveUsrCifs</Password>
      <Principal>cifs/SeridorAlf.xxx.local@XXX.LOCAL</Principal>
     </authenticator>
9) Configurar el servidor web para kerberos (web.xml, en ServidorAlf)
   <filter>
     <filter-name>Authentication Filter</filter-name>
     <filter-class>org.alfresco.web.app.servlet.KerberosAuthenticationFilter</filter-class>
     <init-param>
       <param-name>KDC</param-name>
       <param-value>ServidorAD.XXX.LOCAL</param-value>
     </init-param>
     <init-param>
       <param-name>Realm</param-name>
       <param-value>XXX.LOCAL</param-value>
     </init-param>
     <init-param>
       <param-name>Password</param-name>
       <param-value>ClaveUsrHttp</param-value>
     </init-param>
     <init-param>
       <param-name>Principal</param-name>
       <param-value>HTTP/ServidorAlf.xxx.local@XXX.LOCAL</param-value>
     </init-param>
  </filter>
10) Configurar el servidor WebDAV  para kerberos (web.xml, en ServidorAlf)
  <filter>
     <filter-name>WebDAV Authentication Filter</filter-name>
     <filter-class>org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter</filter-class>
     <init-param>
       <param-name>KDC</param-name>
       <param-value>ServidorAD.XXX.LOCAL</param-value>
     </init-param>
     <init-param>
       <param-name>Realm</param-name>
       <param-value>XXX.LOCAL</param-value>
     </init-param>
     <init-param>
       <param-name>Password</param-name>
       <param-value>ClaveUsrHttp</param-value>
     </init-param>
     <init-param>
       <param-name>Principal</param-name>
       <param-value>HTTP/ServidorAlf.xxx.local@XXX.LOCAL</param-value>
     </init-param>
  </filter>

Espero que alguien pueda ayudarme con esto.

Muchas gracias.
3 REPLIES 3

xian_5749
Champ in-the-making
Champ in-the-making
Buenas,

Así a priori veo los siguientes problemas en los pasos que has seguido:

1. krb5.ini -> este fichero debes configurarlo en la máquina donde ejecutes Alfresco, no en la de AD.
2. java.login.config -> este fichero debes crearlo y configurarlo en la máquina virtual de java que utiliza Alfresco, no en el servidor de AD. La ruta (de memoria) es SDK_HOME/jre/lib/security/java.login.config

Por último recuerda que para poder utilizar Kerberos debes realizar la prueba desde una sesión de usuario abierta en el dominio, ya que de esa manera en la autenticación se enviará el ticket Kerberos que has obtenido al hacer logon en el dominio. Si no lo haces desde una sesión del dominio te pasará que el cliente no tiene ticket Kerberos e intentará una autenticación NTLM (te pedirá usuario y pass).

Suerte

jmruiza
Champ in-the-making
Champ in-the-making
xian muchas gracias por responder.

Al final nos hemos decantado por NTLM. Aunque ahora se nos ha presentado un error con CIFS, que parece ser un bug.
He encontrado un .patch que parece solucionarlo, pero ahora el problema es que no se cómo aplicar este .patch en windows.

sutone
Champ in-the-making
Champ in-the-making
¿Es posible usar kerberos con usuarios locales de máquina?

Gracias