Configuración de la autenticación SPNEGO en Liberty

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 WebSphere Application Server Liberty. 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 Liberty.

Antes de empezar

Configure el software siguiente y asegúrese de que haya disponible:
  1. 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.
  2. 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.
  3. Una plataforma de servidor con un servidor de 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 Liberty utilizando un mecanismo de autenticación de servidor de Liberty nativo. En este tema, un host del servidor de 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 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 Liberty estén sincronizados con 5 minutos de diferencia como máximo 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 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 Liberty para dar soporte al inicio de sesión único para las solicitudes HTTP utilizando la autenticación web SPNEGO.

Procedimiento

  1. 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 Liberty. :
    1. Cree una cuenta de usuario para el servidor de Liberty. Esta cuenta se utiliza para correlacionarse con el nombre principal del servicio (SPN) Kerberos. Para máquinas de Active Directory, esta creación de cuenta se puede realizar, normalmente, yendo a Inicio > Herramientas administrativas > Usuarios y equipos de Active Directory, pulsando con el botón derecho en Usuarios en el panel y seleccionando Nuevo > Usuario. Este tema da por supuesto que el usuario myLibertyMachine_http se ha creado con la contraseña security.
    2. 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 Liberty como un servicio de Kerberos con el KDC. 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.
    3. Cree el archivo de tabla de claves de Kerberos utilizando la herramienta ktpass de Microsoft. El nombre predeterminado de este archivo es krb5.keytab.

      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 hay ningún SPN duplicado en el bosque Microsoft utilizando uno de estos 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.

  2. En la máquina del servidor de Liberty (myLibertyMachine.example.com), habilite los archivos de configuración y tabla de claves de Kerberos, y la autenticación web SPNEGO.
    1. Copie el archivo de tabla de claves de Kerberos desde el controlador de dominio en la máquina del servidor de 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.
    2. Cree un archivo de configuración de Kerberos.

      El archivo de configuración Kerberos contiene información de configuración de cliente. Esta información incluye las ubicaciones de KDC para los reinos de interésl los valores predeterminados para el reino Kerberos actual y correlaciones de nombres de host en reinos Kerberos. Para los servidores de Liberty, debe crear este archivo manualmente.

      El nombre y la ubicación predeterminada de este archivo varía dependiendo del sistema operativo:
      • For Windows platformsWindows: la ubicación predeterminada es c:\winnt\krb5.ini. Si el archivo krb5.ini no está en el directorio c:\winnt, puede estar en c:\windows.
      • For LINUX platformsLinux: la ubicación predeterminada es /etc/krb5.conf.
      • For AIX platformsFor HP UNIX platformsFor Solaris platformsAIX, z/OS, HP-UX y Solaris: la ubicación predeterminada es /etc/krb5/krb5.conf.

      Aquí aparece un archivo de configuración Kerberos de ejemplo para las plataformas AIX, z/OS, HP-UX o Solaris (basándose en la ubicación predeterminada de la tabla de claves).

      [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 está utilizando Microsoft Active Directory, los nombres de reino deben estar 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 KDC soporta el tipo de cifrado que desea utilizar consultando la Guía de administrador y usuario 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.

    3. Verifique los archivos de tabla de claves y configuración de Kerberos.
      • Puede utilizar el mandato JDK klist para listar los SPN en el archivo de tabla de claves.
        klist -k -t /etc/krb5.keytab
      • Puede utilizar el mandato JKD kinit para validar el SPN en el archivo de tabla de claves y el archivo de configuración de Kerberos.
        kinit -k -t /etc/krb5.keytab HTTP/myLibertyMachine.example.com

      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.

    4. Configure y habilite la autenticación web SPNEGO en el servidor de Liberty.

      Puede habilitar la autenticación web SPNEGO habilitando la característica spnego-1.0 de Liberty .

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

        Si desea más información sobre cómo configurar el 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 de configuración de Kerberos en diversas plataformas se han `proporcionado anteriormente en este ejemplo.
      2. Opcional: especifique las opciones de configuración adicionales, según sea necesario. El Liberty soporta muchos escenarios y configuraciones de 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. Aquí aparece una configuración de ejemplo que cambia los valores predeterminados de <spnego>:
        <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" />
                </spnego> 
                ...
        </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.

        Si desea más opciones de configuración, consulte El mecanismo SPNEGO (Simple and Protected GSS-API Negotiation).

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

  3. 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 de Active Directory o la máquina del servidor de 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:
    1. En el escritorio, inicie una sesión en el dominio de Windows Active Directory.
    2. En la ventana Internet Explorer, pulse Herramientas > Opciones de Internet. En la ventana que aparece, pulse la pestaña Seguridad.
    3. Seleccione el icono Intranet local y pulse Sitios....
    4. Si está utilizando Internet Explorer versión 9 o anterior, vaya al paso siguiente. Si está utilizando Internet Explorer 10 o posterior, pulse Avanzado en la ventana Intranet local.
    5. 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.
    6. 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.
    7. Pulse Aceptar. Reinicie Microsoft Internet Explorer para activar esta configuración.
    Mozilla Firefox:
    1. En el escritorio, inicie una sesión en el dominio de Windows Active Directory.
    2. En el campo de dirección de Firefox, escriba about:config.
    3. En el recuadro Filtrar/Buscar, escriba network.n.
    4. 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.
    5. 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.
    6. Pulse Aceptar. La configuración refleja las actualizaciones.
    7. 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 Liberty sin que se le solicite un ID de usuario y una contraseña.

Para verificar que SPNEGO funciona correctamente, puede iniciar una sesión en el controlador de dominio y a continuación acceder a un recurso protegido en el servidor de 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.


Icono que indica el tipo de tema Tema de tarea



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_spnego_config
Nombre de archivo:twlp_spnego_config.html