Generación de señales SPNEGO para solicitudes JAX-WS de salida utilizando enlaces del conjunto de políticas de cliente
Los clientes JAX-WS pueden autenticarse utilizando varios mecanismos de autenticación de transporte HTTP.
Además de autenticarse en aplicaciones de proveedor de servicios mediante autenticación
WS-Security, los clientes JAX-WS pueden autenticarse utilizando varios mecanismos de autenticación
de transporte HTTP, que incluyen los siguientes:
- Autenticación básica utilizando propiedades en los enlaces de transporte HTTP.
- Autenticación de cliente SSL/TLS utilizando enlaces de transporte SSL.
- Autenticación SPNEGO utilizando propiedades personalizadas en los enlaces de transporte HTTP.
Existen 5 variaciones diferentes para obtener las credenciales Kerberos que se utilizan para la señal SPNEGO de salida:
- Una señal solicitada utilizando credenciales nativas de Windows. Cuando el proceso de WebSphere Java™ se ejecuta en un sistema Windows con un ID de usuario, que tiene credenciales Kerberos, el sistema operativo Windows mantiene un tíquet de otorgamiento de tíquet (TGT) de Kerberos para dicho usuario. El tiempo de ejecución de cliente JAX-WS utiliza este TGT para solicitar una señal SPNEGO que se puede solicitar para un ServicePrincipalName (SPN) para el sistema de servicio de destino.
- Una señal solicitada utilizando credenciales Kerberos almacenadas en memoria caché. En un sistema donde se ha conectado un usuario, normalmente utilizando herramientas como la herramienta de Java kinit, las credenciales Kerberos del usuario se almacenan en un archivo de memoria caché llamado krb5cc_<id_usuario. De forma alternativa, se puede crear un archivo de tabla de claves que contenga una clave de usuario utilizando una serie de herramientas, como la herramienta de Microsoft ktpass, o la herramienta de Java ktab. Estos archivos contienen una copia de la clave Kerberos del usuario que se puede utilizar para obtener un tíquet de otorgamiento de tíquet (TGT) para dicho ID de usuario. El tiempo de ejecución de cliente JAX-WS utiliza este TGT para solicitar una señal SPNEGO que se puede solicitar para un ServicePrincipalName (SPN) para el sistema de servicio de destino.El proceso de WebSphere se debe configurar para utilizar krb5cc_<id_usuario> o el archivo de tabla de claves. También debe proporcionarse el UserPrincipalName (UPN) para la credencial almacenada en memoria caché en el archivo.
- Una señal solicitada utilizando una credencial Kerberos con un ID de usuario y una contraseña. En este escenario, el tiempo de ejecución de cliente JAX-WS se conecta al servidor de distribución de claves kerberos con el ID de usuario y la contraseña proporcionados para obtener un tíquet de otorgamiento de tíquet (TGT). A continuación, la clase solicitará la señal SPNEGO con este TGT. El tiempo de ejecución de cliente JAX-WS necesita el ServicePrincipalName (SPN) para el sistema de servicio de destino y el ID de usuario y la contraseña.
- Una señal solicitada utilizando una credencial Kerberos que existe en un sujeto
de Java. El sujeto puede obtener una credencial
Kerberos de uno de los modos siguientes:
- El usuario que ha iniciado sesión en una aplicación web utilizando autenticación web SPNEGO de entrada. Sólo es necesario configurar y habilitar la autenticación web SPNEGO en WebSphere Application Server para esta opción. El ID de usuario asociado con el servicio SPNEGO de entrada debe habilitarse para la delegación de Kerberos completa.
- Se ha recibido una solicitud web JAX-WS que contiene una señal Kerberos WS-Security. El ID de usuario asociado con la solicitud de servicio web de entrada debe habilitarse para la delegación de Kerberos completa.
- El usuario que ha iniciado sesión con un ID de usuario y una contraseña, y WebSphere Application Server se ha configurado para autenticación LTPA y Kerberos.
- Se ha recibido una solicitud de servicio web JAX-WS que contiene una señal de nombre de usuario con una contraseña y WebSphere Application Server se ha configurado para autenticación LTPA y Kerberos.
Las 5 variaciones anteriores que se pueden utilizar para obtener las credenciales
Kerberos que se utilizan para la señal SPNEGO de salida necesitan propiedades personalizadas que
deben definirse en los enlaces HTTP de los enlaces del conjunto de políticas de cliente.
Nombre de propiedad | Value | Comentarios |
---|---|---|
com.ibm.websphere.webservices.spnego.enabled | Booleano | Debe establecerse en true para habilitar cualquiera de las opciones de autenticación SPNEGO en el tiempo de ejecución de enlace de cliente JAX-WS. |
com.ibm.websphere.webservices.spnegoOutboundSPN | Serie | Debe establecerse en el nombre de principal de servicio para el proveedor de servicios web. |
com.ibm.websphere.webservices.spnegoLoginMechanism | Serie | Debe ser GSSUP, native, caller o keytab. |
com.ibm.websphere.webservices.JAASConfigName | Serie | Cuando spnegoLoginMechanism se establece en keytab, esta propiedad debe establecerse en la configuración de inicio de sesión JAAS que identifica el archivo de tabla de claves que debe utilizarse. |
com.ibm.websphere.webservices.spnegoUPN | Serie | Cuando spnegoLoginMechanism se establece en keytab, esta propiedad debe establecerse en el nombre de principal de usuario de la clave dentro de la tabla de claves que se va a utilizar. |
com.ibm.websphere.webservices.spnegoOutboundLifeTime | Integer | Si no se especifica, se solicita tiempo de vida infinito para la señal SPNEGO. |
com.ibm.websphere.webservices.spnegoOutboundDelegate | Booleano | Si se establece en true y la cuenta de SPN de servicio web está habilitada para delegación, la señal SPNEGO enviada al servicio web se puede delegar. |
Cuando la propiedad spnegoLoginMechanism se establece en GSSUP, el ID de usuario y la contraseña se obtienen de la autenticación básica para las propiedades de solicitudes de servicio de salida.
Cuando la propiedad spnegoLoginMechanism se establece en caller, la credencial Kerberos se obtiene del sujeto emisor.
Cuando la propiedad spnegoLoginMechanism se establece en Native, la credencial Kerberos se obtiene del sistema operativo Windows.
- Notas para credenciales nativas
- La memoria caché de credenciales de inicio de sesión de
Microsoft Kerberos (MSLSA) se basa en la capacidad de
extraer el tíquet de Kerberos completo, incluida la clave de sesión de la memoria caché de
credenciales de inicio de sesión de Kerberos (LSA). En un intento de aumentar la seguridad, Microsoft ha implementado una característica mediante la que
ya no se exportan las claves de sesión para Ticket Getting Tickets, lo que puede hacer que sean
inservibles para IBM® JGSS cuando se intenta solicitar más tíquets de servicio. Esta nueva característica se ha encontrado en Windows 2003
Server y sistemas posteriores. Microsoft ha proporcionado la siguiente clave de registro para inhabilitar esta nueva característica:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters AllowTGTSessionKey = 0x01 (DWORD)
- Requisitos del archivo de configuración de Kerberos
- El archivo de configuración de Kerberos debe estar correctamente configurado independientemente
del enfoque.
- El modo en que el proceso de WebSphere accede al centro de distribución de claves (KDC) debe configurarse correctamente mediante las stanzas [realms] y [domain_realm].
- Los tipos de cifrado que deben utilizarse en la stanza [libdefaults] deben especificar los valores default_tkt_enctypes y default_tgs_enctypes.
- La stanza [libdefaults] debe incluir lo siguiente:
- forwardable = true
- renewable = true
- noaddresses = true
- La stanza [libdefaults] debe definir un valor clockskew razonable.