Puede utilizar un inicio de sesión único para las solicitudes HTTP utilizando
la autenticación web SPNEGO (Simple and Protected GSS-API Negotiation Mechanism) para el
perfil Liberty de WebSphere Application
Server. El inicio de sesión único SPNEGO permite a los usuarios HTTP iniciar una sesión
en un controlador de dominio de Microsoft® sólo una vez en su escritorio y lograr el
inicio de sesión único (SSO) con el servidor de perfiles Liberty.
Antes de empezar
Configure el software siguiente y asegúrese de que haya disponible:
- Un Microsoft Windows®
Server que ejecute un controlador de dominio de Active Directory y un centro de
distribución de claves (KDC) de Kerberos asociado. En este tema, un host de ejemplo
para un controlador de dominio de este tipo es myAdMachine.example.com.
El nombre del controlador de dominio es mydomain.example.com y el nombre
del reino Kerberos es MYDOMAIN.EXAMPLE.COM, que es el nombre del
controlador de dominio en letras mayúsculas.
- Un miembro de dominio (cliente) de Microsoft
Windows® que dé soporte al mecanismo de autenticación SPNEGO tal como se
define en IETF RFC 2478. Un ejemplo de un cliente adecuado puede ser un navegador moderno
o un cliente Microsoft .NET. La mayoría de
navegadores modernos dan soporte a la autenticación SPNEGO. En este tema, un host de
ejemplo para el cliente es myClientMachine.example.com.
- Una plataforma de servidor con un servidor de perfiles Liberty que tenga un recurso
protegido en una aplicación. Los usuarios en Active Directory deben poder acceder
a los recursos protegidos del servidor de perfiles Liberty utilizando un mecanismo de
autenticación de servidor de perfiles Liberty nativo. En este tema, un host del servidor
de perfiles Liberty de ejemplo es myLibertyMachine.example.com.
Nota: La configuración de software debe tener un controlador de dominio en ejecución, al menos
una máquina cliente en dicho dominio y una plataforma de servidor con un servidor de perfiles Liberty que tenga un recurso
protegido en una aplicación, lo que hace un total de tres máquinas necesarias. No se da
soporte al uso directo de SPNEGO desde el controlador de dominio.
Nota: Asegúrese
de que los relojes del cliente, Microsoft
Active Directory Server y el servidor de perfiles Liberty estén sincronizados para
dentro de 5 minutos entre sí de forma predeterminada. La diferencia permitida en
la sincronización puede configurarse.
Nota: Sólo están soportados actualmente
los JDK de IBM®. Los JDK que no son de IBM no están
soportados.
Acerca de esta tarea
El objetivo de esta tarea es permitir a los usuarios acceder correctamente a
los recursos del servidor de perfiles Liberty sin tener que
autenticarse de nuevo, y así lograr la prestación de inicio de sesión único del
escritorio de Microsoft Windows®.
Esta
tarea muestra cómo configurar un servidor de perfiles Liberty para dar soporte al inicio
de sesión único para las solicitudes HTTP utilizando la autenticación web SPNEGO.
Procedimiento
- En el controlador de dominio de Microsoft
(myAdMachine.example.com), cree un nombre de principal de
servicio (SPN) de Kerberos y el archivo de tabla de claves para el servidor de perfiles
Liberty. :
- Cree una cuenta de usuario para el servidor de perfiles Liberty. Esta es la cuenta
que se utiliza para correlacionarse con el nombre de principal de servicio (SPN) de
Kerberos. Para crearla, en las máquinas Active Directory, vaya a , pulse con el botón derecho Usuarios en el panel y seleccione
. En
este tema se supone que el usuario myLibertyMachine_http se ha creado
con la contraseña security.
- Ejecute el mandato setspn de
Microsoft para correlacionar la cuenta de
usuario con un SPN de Kerberos. Esta cuenta de usuario representa el servidor de perfiles
Liberty como un servicio de Kerberos con el KDC. A continuación, se muestra un ejemplo del mandato setspn:
C:\> setspn -a HTTP/myLibertyMachine.example.com myLibertyMachine_http
Registering ServicePrincipalNames for CN=myLibertyMachine_http,CN=Users,DC=MYDOMAIN,DC=EXAMPLE,DC=COM
HTTP/myLibertyMachine.example.com
Updated object
Nota: Si el mandato setspn de
Microsoft da soporte a la opción
-S, debe utilizar la opción -S en lugar de -A.
- Cree el archivo de tabla de claves de Kerberos utilizando la herramienta
ktpass de Microsoft. El
nombre predeterminado de este archivo es krb5.keytab.
A continuación, se muestra un ejemplo del mandato ktpass:
C:\> ktpass -out krb5.keytab -princ HTTP/myLibertyMachine.example.com@MYDOMAIN.EXAMPLE.COM -mapUser myLibertyMachine_http -mapOp set -pass security -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL
Targeting domain controller: myAdMachine.MYDOMAIN.EXAMPLE.COM
Using legacy password setting method
Successfully mapped HTTP/myLibertyMachine.example.com to myLibertyMachine_http.
Key created.
Output keytab to krb5.keytab:
Keytab version: 0x502
keysize 93 HTTP/myLibertyMachine.example.com@MYDOMAIN.EXAMPLE.COM ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x17 (RC4-HMAC) keylength 16 (0x148d643db283327d3f3d44547da8cade)
Asegúrese de que no haya ningún SPN duplicado en
el bosque de Microsoft utilizando uno de los
siguientes mandatos:
- Si el mandato setspn de
Microsoft da soporte a la opción
-X para buscar un SPN duplicado, utilice setspn -X:
C:\>setspn -X HTTP/myLibertyMachine.example.com
Processing entry 0
found 0 group of duplicate SPNs.
- También puede utilizar el mandato ldif de Microsoft.
El siguiente ejemplo muestra que se ha devuelto una entrada, lo que significa que no hay
un SPN duplicado.
C:\>ldifde -f check_SPN.txt -t 3268 -d "" -l servicePrincipalName -r "
(servicePrincipalName=HTTP/myLibertyMachine.example.com)" -p subtree
Connecting to "myAdMachine.MYDOMAIN.EXAMPLE.COM"
Logging in as current user using SSPI
Exporting directory to file check_SPN.txt
Searching for entries...
Writing out entries.
1 entries exported
Para obtener información sobre cómo crear SPN y archivos de tabla de claves en
distintos sistemas KDC, consulte
Creación de un nombre principal del servicio Kerberos y un archivo de tabla de claves.
- En la máquina del servidor del perfil Liberty
(myLibertyMachine.example.com), habilite los archivos
de configuración y tabla de claves de Kerberos, y la autenticación web SPNEGO.
- Copie el archivo de tabla de claves de Kerberos desde el controlador de dominio en la
máquina del servidor de perfiles Liberty. El nombre predeterminado de este archivo es
krb5.keytab y la ubicación predeterminada varía en función de la
plataforma, pero es el mismo directorio que el del archivo de configuración de Kerberos.
Para ver las ubicaciones predeterminadas para las distintas plataformas, consulte el paso
siguiente.
- Cree un archivo de configuración de Kerberos.
El archivo de configuración de Kerberos contiene información de configuración del
cliente, incluidas las ubicaciones de los KDC de los reinos de interés, los valores
predeterminados del reino de Kerberos actual y las correlaciones de los nombres de host
con los reinos de Kerberos. Para los servidores de perfiles Liberty, debe crear este
archivo manualmente.
El siguiente es un archivo de configuración de Kerberos de ejemplo para las
plataformas AIX,
z/OS, HP-UX o Solaris (basado en la ubicación
de la tabla de claves predeterminada):
[libdefaults]
default_realm = MYDOMAIN.EXAMPLE.COM
default_keytab_name = FILE:/etc/krb5/krb5.keytab
default_tkt_enctypes = rc4-hmac
default_tgs_enctypes = rc4-hmac
forwardable = true
renewable = true
noaddresses = true
clockskew = 300
udp_preference_limit = 1
[realms]
MYDOMAIN.EXAMPLE.COM = {
kdc = myAdMachine.example.com:88
default_domain = example.com
}
[domain_realm]
.example.com = MYDOMAIN.EXAMPLE.COM
Nota: Los nombres de reino se especifican normalmente en mayúsculas. Si utiliza
Microsoft Active Directory, los nombres de
reino deben ir en mayúsculas.
Nota: No todas los soluciones KDC disponibles dan soporte a todos los tipos de cifrado.
Antes de elegir un tipo de cifrado, asegúrese de que el KDC dé soporte al tipo de cifrado
que desea utilizar consultando la guía del usuario y del administrador de Kerberos.
Asegúrese de que tiene un tipo de cifrado común para el archivo de configuración de
Kerberos, el archivo de tabla de claves de Kerberos, el SPN de Kerberos y el cliente de
Kerberos. Por ejemplo, si el cliente de Kerberos utiliza el tipo
de cifrado RC4-HMAC, el servidor de destino también debe dar soporte al
tipo de cifrado RC4-HMAC, y el archivo de configuración de Kerberos debe
mostrar RC4-HMAC primero en los parámetros
default_tgt_enctypes y default_tkt_enctypes.
Para obtener más información y ver los requisitos del contenido de este
archivo, consulte
Creación
de un archivo de configuración de Kerberos.
- Verifique los archivos de tabla de claves y configuración de Kerberos.
Después del mandato kinit, puede utilizar el mandato
klist para listar el tíquet de Kerberos. Si obtiene el tíquet de
Kerberos, los archivos de configuración y de tabla de claves de Kerberos son válidos.
- Configure y habilite la autenticación web SPNEGO en el servidor de perfiles
Liberty.
Puede habilitar la autenticación web SPNEGO habilitando la característica
spnego-1.0 del perfil Liberty.
- Añada la característica spnego-1.0 al archivo
server.xml.
<featureManager>
<feature>spnego-1.0</feature>
<feature>appSecurity-2.0</feature>
...
</featuremanager>
La adición de la característica
spnego-1.0 impone automáticamente una configuración mínima determinada.
No es necesario que especifique un elemento <spnego> en el
archivo server.xml. Si no especifica un elemento
<spnego>, la siguiente configuración es implícita.
<spnego
canonicalHostName="true"
disableFailOverToAppAuthType="true"
trimKerberosRealmNameFromPrincipal="true"
includeClientGSSCredentialInSubject="true" />
Nota: El tiempo de
ejecución forma el SPN predeterminado con el formato siguiente:
"HTTP/" + java.net.InetAddress.getLocalHost().getCanonicalHostName();
Si el SPN predeterminado no coincide con lo que hay en el archivo
krb5.keytab, debe especificar servicePrincipalNames, por ejemplo:
<spnego id="mySpnego" servicePrincipalNames="HTTP/myLibertyMachine.example.com"/>
Nota: Cuando
la característica spnego-1.0 está habilitada y el elemento
<spnego> se omite o no se ha configurado con un atributo
authFilterRef, todas las solicitudes para acceder a los recursos
protegidos utilizan la autenticación SPNEGO.
Para obtener más información sobre
la configuración del filtro de autenticación, consulte

Filtros de autenticación.
Nota: Cuando no se proporcionan los valores para los atributos krb5Config o
krb5Keytab, cada archivo respectivo se espera que exista en la
ubicación predeterminada. Las ubicaciones predeterminadas para los archivos de
tabla de claves y configuración de Kerberos en las distintas plataformas se han
proporcionado previamente en este tema.
- Opcional: especifique las opciones de configuración adicionales, según sea necesario.
El perfil Liberty da soporte a muchos escenarios y configuraciones SPNEGO comunes. Por
ejemplo, puede filtrar las solicitudes HTTP para requerir la autenticación SPNEGO sólo para
determinadas solicitudes, aplicaciones web, hosts o agentes de usuarios. Asimismo, puede
cambiar los archivos de tabla de claves y configuración de Kerberos de sus ubicaciones
predeterminadas respectivas. A continuación, se proporciona una configuración de
ejemplo que cambia los valores <spnego> predeterminados:
<server>
<featureManager>
<feature>spnego-1.0</feature>
<feature>appSecurity-2.0</feature>
...
</featureManager>
...
<authFilter id="myAuthFilter">
<host id="myHost" name="example.com" matchType="contains" />
<webApp id="myWebApp" name="protectedApp" matchType="equals" />
</authFilter>
<spnego id="mySpnego"
includeClientGSSCredentialInSubject="false"
krb5Config="${server.config.dir}/resources/security/kerberos/krb5.conf"
krb5Keytab="${server.config.dir}/resources/security/kerberos/krb5.keytab"
servicePrincipalNames="HTTP/myLibertyMachine.example.com"
authFilterRef="myAuthFilter" />
...
</server>
Con esta configuración, se utiliza la autenticación SPNEGO
para todas las solicitudes que se reciben que contienen el nombre de host
example.com para los recursos dentro de la aplicación web
protectedApp. Asimismo, las credenciales GSS del cliente no se añaden al
sujeto de usuario cuando la autenticación es correcta. Por último, a los archivos de tabla
de claves y de configuración de Kerberos que utilizará el servidor se les proporcionan
ubicaciones específicas dentro del directorio de configuración del servidor, en lugar de sus
ubicaciones predeterminadas respectivas.
Para ver más opciones de
configuración, consulte

SPNEGO (Simple and Protected GSS-API Negotiation Mechanism).
Para obtener información sobre la correlación de nombres de principal de Kerberos
con ID de registro de usuarios de WebSphere, consulte
Correlación
de un nombre de principal Kerberos del cliente con el ID de registro de usuarios de WebSphere.
En el caso excepcional de que desee utilizar nombres de principal de Kerberos para
la autorización, consulte

Utilización del nombre de principal de Kerberos para la autorización con la autenticación SPNEGO.
Estos pasos sólo deben seguirse cuando sea absolutamente necesario y para los
usuarios que opten específicamente por no utilizar la correlación predeterminada o la
correlación de módulo de inicio de sesión predeterminado JAAS.
- Configure la aplicación cliente en la máquina de la aplicación cliente
(myClientMachine.example.com).
Los pasos siguientes sólo deben ejecutarse en la máquina cliente. Iniciar un
navegador en la máquina Active Directory o la máquina del servidor de perfiles Liberty y
realizar estos pasos no funcionará.
Los pasos siguientes son para los usuarios que acceden a recursos protegidos por SPNEGO
desde un navegador. Debe tener instalado un navegador que dé soporte a la autenticación
SPNEGO.
Microsoft Internet
Explorer:
- En el escritorio, inicie una sesión en el dominio de
Windows Active Directory.
- En la ventana Internet Explorer, pulse
. En la ventana que aparece, pulse la pestaña Seguridad.
- Seleccione el icono Intranet local y pulse
Sitios....
- Si utiliza Internet Explorer versión 9 o anterior, vaya al paso siguiente. Si utiliza
Internet Explorer 10 o posterior, pulse Opciones avanzados en la
ventana Intranet local.
- En la ventana Intranet local, complete el campo Agregar este sitio web a la
zona de: con la dirección web del nombre de host para que el inicio de sesión
único (SSO) pueda habilitarse para la lista de sitios web que aparecen en el campo Sitios web.
El personal de tecnología de la información del sitio le proporciona esta información.
Cierre la segunda ventana Intranet local y pulse Aceptar
para completar este paso y cerrar la ventana Intranet local.
- En la ventana Opciones de Internet, pulse la pestaña
Opciones avanzadas y desplácese hasta los valores de Seguridad.
Asegúrese de que el recuadro Habilitar autenticación integrada de Windows®
esté seleccionado.
- Pulse Aceptar. Reinicie Microsoft Internet Explorer para activar esta
configuración.
Mozilla Firefox:
- En el escritorio, inicie una sesión en el dominio de
Windows Active Directory.
- En el campo de dirección de Firefox, escriba about:config.
- En el recuadro Filtrar/Buscar, escriba network.n.
- Efectúe una doble pulsación en
network.negotiate-auth.trusted-uris. Esta preferencia lista los
sitios que pueden participar en la autenticación SPNEGO con el navegador. Escriba una
lista de dominios de confianza o URL delimitada por comas.
Nota: Debe establecer el valor
de network.negotiate-auth.trusted-uris.
- Si la solución SPENGO desplegada está utilizando la característica de Kerberos
avanzada de delegación de credenciales, efectúe una doble pulsación en
network.negotiate-auth.delegation-uris. Esta preferencia lista los
sitios para los que el navegador puede delegar la autorización de usuarios al servidor.
Escriba una lista de dominios de confianza o URL delimitada por comas.
- Pulse Aceptar. La configuración refleja las actualizaciones.
- Reinicie el navegador Firefox para activar esta configuración.
Nota: El usuario debe haber iniciado una sesión en el controlador de dominio para que
SPNEGO funcione. Utilizando las máquinas de ejemplo anteriores, un usuario debe iniciar
una sesión en el controlador de dominio en MYDOMAIN.EXAMPLE.COM\username para que la autenticación SPNEGO a través
del navegador funcione.
Nota: Si se le solicita varias veces un ID de usuario y una contraseña, asegúrese de
haber habilitado el soporte SPNEGO en el navegador del cliente siguiendo las
instrucciones anteriores. También debe comprobar que el atributo
disableFailOverToAppAuthType en la configuración
<spnego> se haya establecido en false.
Resultados
El navegador de Internet está ahora configurado correctamente para la
autenticación SPNEGO. Puede utilizar aplicaciones con los recursos protegidos que se
despliegan en los servidores de perfiles Liberty sin que se le solicite un ID de usuario
y una contraseña.
Para verificar que SPNEGO funciona correctamente, inicie una
sesión en el controlador de dominio, acceda a un recurso protegido en el servidor de
perfiles Liberty y, como ha iniciado una sesión en el controlador de dominio, no se
le solicitarán credenciales. Sin embargo, si no inicia una sesión en el controlador de
dominio e intenta acceder a un recurso protegido, se le solicitarán credenciales.