Repositorio de Liberty[8.5.5.5 o posterior]

Configuración de la autenticación SPNEGO en el perfil 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 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:
  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 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

  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 perfiles Liberty. :
    1. 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 Inicio > Herramientas administrativas > Usuarios y sistemas de Active Directory, pulse con el botón derecho Usuarios en el panel y seleccione Nuevo > Usuario. En este tema se supone 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 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.
    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.

      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.

  2. 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.
    1. 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.
    2. 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 nombre y la ubicación predeterminada de este archivo varía dependiendo del sistema operativo:
      • Para plataformas WindowsWindows: 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.
      • Para plataformas LINUXLinux: la ubicación predeterminada es /etc/krb5.conf.
      • Para plataformas AIXPara plataformas HP-UXPara plataformas SolarisAIX, z/OS, HP-UX y Solaris: la ubicación predeterminada es /etc/krb5/krb5.conf.

      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.

    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 perfiles Liberty.

      Puede habilitar la autenticación web SPNEGO habilitando la característica spnego-1.0 del perfil 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.

        Para obtener más información sobre la configuración del filtro de autenticación, consulte Repositorio de Liberty[8.5.5.5 o posterior]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.
      2. 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 Repositorio de Liberty[8.5.5.5 o posterior]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 Repositorio de Liberty[8.5.5.5 o posterior]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.

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


Icono que indica el tipo de tema Tema de tarea

Términos y condiciones para centros de información | Comentarios


Icono de indicación de fecha y hora Última actualización: 15 de junio de 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_spnego_config
Nombre de archivo:twlp_spnego_config.html