SPNEGO, es el sistema que nos permite pasar las credenciales de nuestro sistema de AD DS y a nuestro servidor de Zimbra, para que nos autentique el acceso vía webmail. Esta técnica de paso de credenciales se llama SSO ( Single Sign-On). Lo que hace, es que cuando accedemos via web a nuestro servidor de Zimbra, se pasan las credenciales con las que hemos hecho login en nuestra sesión de Active Directory y si cuadran con la cuenta de Zimbra, no nos solicita de nuevo el usuario y la contraseña, accederemos directamente a nuestra cuenta de correo. Por defecto Zimbra nos trae deshabilitado SPNEGO, por temas de seguridad. Para poder desplegarlo, lo primero que hemos de hacer es una cuenta de servicio:
Crearemos una cuenta en nuestro AD DS:
Crearemos la cuenta con los siguientes datos. En el “User logon name” pondremos: ZimbraSPNEGO y en “Logon Name (pre-Windows 2000):” aquí pondremos: ZimbraSPNEGO, este nombre será usado posteriormente por -mapUser {AD-user}. Hay que tener en cuenta, que estos datos se usaran para configurar nuestro SPNEGO.
Registramos el usuario que hemos creado anteriormente, con el siguiente comando
[syntax type=”php”]C:\Windows\system32>setspn -a HTTP/ZimbraSPNEGO ZimbraSPNEGO[/syntax]
Verificamos que el usuario se ha registrado:
[syntax type=”php”]C:\Windows\system32>setspn -L ZimbraSPNEGO[/syntax]
Añadimos nuestro servidor Zimbra (zimbra.ilba.cat) al usuario
[syntax type=”php”]C:\Windows\system32>setspn -A HTTP/zimbra.ilba.cat ZimbraSPNEGO[/syntax]
Verificamos los cambios realizados en el usuario SPNEGO:
[syntax type=”php”]C:\Windows\system32>setspn -L ZimbraSPNEGO[/syntax]
Realmente lo que estamos haciendo, es añadiendo atributos a la cuenta que hemos creado. Para poder observar los cambios realizados, lo podríamos hacer desde el ADUC (Active Directory Users an Computers), habilitando las características avanzadas desde nuestra consola MMC (ADUC):
El fichero keytab, es usado para que los usuarios se puedan autenticar con nuestro AD DS. Creamos un directorio temporal donde ubicaremos nuestro fichero de keytab.
[syntax type=”php”]C:\>mkdir C:\tmp[/syntax]
Creamos el fichero keytab, que posteriormente ubicaremos en nuestro servidor de Zimbra:
C:\>ktpass -out C:\tmp\fichero.keytab -princ HTTP/[email protected] –mapUser ILBA\ZimbraSPNEGO -mapOp set -pass Ilba2014 -crypto RC4-HMAC-NT -pType KRB5_NT_PRINCIPAL
Podremos observar que nos ha creado el fichero:
Una vez ubicado en nuestro servidor de Zimbra, es vital que el fichero tenga el nombre: jetty.keytab y lo coloquemos en su lugar correspondiente, para que el SPNEGO lo pueda leer:
[syntax type=”php”]
root@zimbra:~# mv fichero.keytab jetty.keytab
root@zimbra:~# cp jetty.keytab /opt/zimbra/data/mailboxd/spnego/jetty.keytab
[/syntax]
Como ya he comentado anteriormente, por medidas de seguridad SPNEGO viene deshabilitado, habilitamos SPNEGO en nuestro servidor de Zimbra:
[syntax type=”php”]zimbra@zimbra:~$ zmprov mcf zimbraSpnegoAuthEnabled TRUE[/syntax]
Configuraremos la URL a la cual seremos redireccionados cuando la autenticación falle. Como norma general, pondremos: /zimbra/?ignoreLoginURL=1 , ya que nos redireccionará a la web que nos solicitará usuario y password para acceder al webmail de nuestro sistema de Zimbra. En nuestro caso hemos puesto la web de Jorge 😉
[syntax type=”php”]zimbra@zimbra:~$ zmprov mcf zimbraSpnegoAuthErrorURL http://www.jorgedelacruz.es/[/syntax]
Le indicaremos el nombre de nuestro reino de Kerberos, en pocas palabras el nombre de nuestro dominio:
[syntax type=”php”]zimbra@zimbra:~$ zmprov mcf zimbraSpnegoAuthRealm ILBA.CAT[/syntax]
Para la configuración, necesitamos conocer el nombre del servidor, en mi caso es zimbra.ilba.cat. Lo podemos saber lanzando el siguiente comando:
El acceso URL a la plataforma de Zimbra, es el mismo que el hostname del equipo. Modificaremos los atributos de nuestro servidor:
[syntax type=”php”]
zimbra@zimbra:~$ zmprov ms zimbra.ilba.cat zimbraSpnegoAuthTargetName HTTP/zimbra.ilba.cat
zimbra@zimbra:~$ zmprov ms zimbra.ilba.cat zimbraSpnegoAuthPrincipal HTTP/[email protected]
[/syntax]
Configuraremos el nombre del dominio de Kerberos:
[syntax type=”php”]zimbra@zimbra:~$ zmprov md ilba.cat zimbraAuthKerberos5Realm ILBA.CAT[/syntax]
Configuraremos el virtualhostname para el dominio ilba.cat:
[syntax type=”php”]zimbra@zimbra:~$ zmprov md ilba.cat +zimbraVirtualHostname zimbra.ilba.cat[/syntax]
Podremos observar los cambios realizados en el comando anterior, via administración de Zimbra:
Cambiamos la URL de autenticación para que por defecto los usuarios vayan a la autenticación SPNEGO
[syntax type=”php”]zimbra@zimbra:~$ zmprov md ilba.cat zimbraWebClientLoginURL ‘../service/spnego'[/syntax]
Habilitamos el acceso para los diferentes navegadores:
[syntax type=”php”]
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLoginURLAllowedUA ‘.*Windows.*Firefox/3.*’
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLoginURLAllowedUA ‘.*MSIE.*Windows.*’
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLoginURLAllowedUA ‘.*Windows.*Chrome.*’
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLoginURLAllowedUA ‘.*Windows.*Safari.*’
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLoginURLAllowedUA ‘.*Macintosh.*Safari.*’
[/syntax]
Configuramos la URL que irá a parar el usuario cuando haga “Logout” de su webmail
[syntax type=”php”]zimbra@zimbra:~$ zmprov md ilba.cat zimbraWebClientLogoutURL ‘../?sso=1′[/syntax]
[syntax type=”php”]
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLogoutURLAllowedUA ‘.*Windows.*Firefox/3.*’
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLogoutURLAllowedUA ‘.*MSIE.*Windows.*’
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLogoutURLAllowedUA ‘.*Windows.*Chrome.*’
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLogoutURLAllowedUA ‘.*Windows.*Safari.*’
zimbra@zimbra:~$ zmprov md ilba.cat +zimbraWebClientLogoutURLAllowedUA ‘.*Macintosh.*Safari.*’
[/syntax]
Para acceder desde diferentes navegadores como Firefox, IE, Google Chrome, etc… es necesaria hacer modificaciones en las propiedades de los navegadores. Yo simplemente explicaré el Firefox, en el cual se han de realizar dos modificaciones:
[syntax type=”php”]
network.negotiate-auth.delegation-uris
network.negotiate-auth.trusted-uris
[/syntax]
En las cuales, ubicaremos las diferentes URL’s para poder acceder a nuestro servidor de Zimbra:
Una vez realizados los cambios en nuestro navegador hay que reiniciarlo, para que se apliquen los cambios. Una vez realizados los cambios, ya podremos acceder a nuestro webmail sin necesidad de introducir nuestro nombre de usuario y password.
Espero que os sea de ayuda 😉





















Requiero hacer lo mismo pero el Directorio Activo esta montado sobre Samba4 y no windows. Como pudiera habilitar el spnego en este dominio. Salu2 desde Cuba, gracias por este excelente blog, que me mantiene siempre al día sobre Zimbra.
Buenas tardes Arian,
Muchas gracias por tus palabras, una pregunta, estamos teniendo unos problemas con los comentarios, y a veces no nos deja comentar. ¿Desde donde o cómo has comentado? Facebook, wordpress, twitter, o nada? 🙂
Oscar ya está leyendo la pregunta y vamos a ver si hacemos un lab y te comentamos.
Un saludo
La verdad es que la pregunta es compleja y de dificil solución, ya que desde un AD con Samba4, no creo (o no sé) como podras crear el fichero: fichero.keytab o simplemte no creo que puedas añadir el usuario al SPNEGO de tu Samba4. La verdad es que lo veo complejo. Esto, está pensado para Active Directory de Microsoft. Me informaré sobre el tema y si veo algo que te pueda ayudar, te informo.
Un saludo y gracias por leer el blog 😉
Grande y detallada guía, Muchas gracias.