Sugerencias para la resolución de problemas del interceptor de asociación de confianza (TAI) de SPNEGO (obsoleto)
A continuación figura una lista de sugerencias prácticas para la resolución de problemas en el diagnóstico de problemas y excepciones del TAI del mecanismo SPNEGO (Simple and Protected GSS-API Negotiation).

En WebSphere Application Server Versión 6.1 se introdujo un interceptor de asociación de confianza (TAI) que utiliza el mecanismo SPNEGO (Simple and Protected GSS-API Negotiation Mechanism) para negociar y autenticar de forma segura solicitudes HTTP para los recursos protegidos. En WebSphere Application Server 7.0, esta función está en desuso. La autenticación web SPNEGO ha ocupado su lugar para proporcionar la recarga dinámica de filtros SPNEGO y para habilitar la recuperación para el método de inicio de sesión de la aplicación.
depfeatRastreo | Uso |
---|---|
com.ibm.security.jgss.debug | Establezca esta propiedad personalizada de JVM en all para rastrear el código JGSS. Los mensajes aparecen en el archivo trace.log y SystemOut.log. |
com.ibm.security.krb5.Krb5Debug | Establezca esta propiedad personalizada de JVM en all para rastrear el código JGSS específico de Kerberos5. Los mensajes aparecen en el archivo trace.log y SystemOut.log. |
com.ibm.ws.security.spnego.* | Active este rastreo seleccionando trace.log. | . Los mensajes aparecen en el archivo
Problema: WebSphere Application Server y el controlador de dominio de AD (Active Directory) no están sincronizados dentro de un rango de cinco minutos.
Síntoma | Acción del usuario |
---|---|
|
La manera preferible de resolver este problema es sincronizar la hora del sistema de WebSphere
Application Server para que no esté a más de 5 minutos de la hora del servidor AD. Un
procedimiento recomendado es utilizar un servidor de horas para mantener todos los sistemas sincronizados. También puede añadir o ajustar el parámetro
clockskew en el archivo de configuración de Kerberos. Nota: El valor predeterminado del parámetro clockskew es 300 segundos ( o 5
minutos).
|
Problema: No hay fábricas disponibles para crear el nombre del mecanismo 1.3.6.1.5.5.2.
Problema | Síntoma | Acción del usuario |
---|---|---|
Se recibe una excepción: No hay fábricas disponibles para crear el nombre del mecanismo 1.3.6.1.5.5.2. No hay ninguna fábrica disponible para procesar la creación de un nombre para el mecanismo específico. |
|
Compruebe el archivo java.security para asegurarse de que contiene el proveedor de seguridad IBMSPNEGO y que el proveedor se
ha definido correctamente.
El archivo java.security debe contener una línea similar a:
|
Problema: Se recibe una excepción cuando la biblioteca JGSS intenta procesar la señal SPNEGO.
Síntoma | Descripción | Acción del usuario |
---|---|---|
Se muestra el error siguiente cuando la biblioteca JGSS intenta procesar la señal SPNEGO.
|
Esta excepción
es el resultado de cifrar el ticket utilizando una clave e intentar descifrarlo utilizando una clave diferente. Existen diversos motivos posibles
para
esta condición:
|
Si el problema está relacionado con el archivo de tabla de claves de
Kerberos, vuelva a generar el archivo de tabla de claves. Si el problema está relacionado con que hay múltiples definiciones de SPN, elimine el SPN adicional o en conflicto, confirme que el SPN ya no está registrado con
Active Directory y, a continuación, añada el SPN.
Podría ser necesario hacer búsquedas en Active Directory de otras entradas con
SPN definidos que entran en conflicto con el SPN. Para confirmar que el SPN no está registrado, el mandato:
Debería devolver la respuesta siguiente:
|
Problema: No se está produciendo el inicio de sesión único
Síntoma | Descripción | Acción del usuario |
---|---|---|
Si está activado el rastreo, aparece el mensaje siguiente:
|
El cliente está devolviendo una respuesta NTLM (gestor NT de la LAN) a la verificación de la pregunta de contraseña, no una señal SPNEGO. Esta
condición se puede producir debido a cualquiera de los motivos siguientes:
|
Si el SPN está definido incorrectamente como HTTP/servidor.reino.com@REALM.COM con el añadido de @REALM.COM, suprima el usuario, vuelva de definirlo y también vuelva a definir el SPN. Si el problema está relacionado con el archivo de tabla de claves de Kerberos, vuelva a generar el archivo de tabla de claves. Si el problema está relacionado con una de
categorías de múltiples definiciones de SPN, elimine el SPN adicional o en conflicto, confirme que el
SPN ya no está registrado con Active Directory y, a continuación, añada el SPN. Puede
buscar otras entradas de SPN en Active Directory que causen múltiples definiciones de SPN. Los siguientes mandatos son útiles para determinar múltiples definiciones de SPN:
|
La delegación de credenciales no está en funcionamiento.
Síntoma | Descripción | Acción del usuario |
---|---|---|
Se ha detectado una opción no válida. Si está activado el rastreo, aparece el mensaje siguiente:
|
El archivo de configuración de Kerberos no está configurado correctamente. | Asegúrese de que los valores relacionados con la capacidad de renovación y proxy están establecidos en true. |
Problema: No se ha podido obtener el trabajo SSO utilizando el cifrado RC4-HMAC.
Síntoma | Descripción | Acción del usuario |
---|---|---|
Examine el mensaje siguiente en el rastreo que ha recibido cuando esté activado el rastreo:
|
El cifrado RC4-HMAC sólo está soportado por un centro de distribución de claves (KDC) de una versión de
Microsoft Windows anterior a 2003. Para confirmar esta condición, examine el rastreo e identifique dónde se lanzó la excepción.
El contenido del ticket entrante debe estar visible en el rastreo.
Aunque el tíquet entrante está cifrado, el SPN del servicio es legible. Si se utiliza un KDC de una versión de
Microsoft Windows anterior a 2003 y el sistema se ha configurado para
utilizar RC4-HMAC, se visualiza la serie que representa el ticket para id_usuario@REINO (en lugar del ticket esperado
HTTP/nombrehost.reino@REINO).
Por ejemplo, este es el principio de un ticket recibido desde un KDC de una versión de
Microsoft Windows anterior a 2003:
El reino es REINO.COM. El nombre del servicio es el id_usuario. Un ticket formado correctamente para el mismo SPN es:
|
Para corregir el problema, utilice el estándar de cifrado de datos (DES) único, o bien utilice el servidor Microsoft Windows 2003 Server para un KDC. Recuerde que debe regenerar el SPN y el archivo de la tabla de claves de Kerberos. |
El usuario recibe el mensaje siguiente cuando accede a un URL protegido a través del SSO de SPNEGO.
Síntoma | Descripción | Acción del usuario |
---|---|---|
Analice el mensaje siguiente:
|
Este mensaje lo genera Apache/IBM HTTP Server. Este servidor indica que la cabecera de autorización devuelta por el navegador del usuario es demasiado grande. La serie larga a continuación de la palabra Negotiate (en el mensaje de error anterior) es la señal SPNEGO. Esta señal SPNEGO es un envoltorio de la señal Kerberos de Microsoft Windows. Microsoft Windows incluye la información de PAC del usuario en la señal Kerberos. Cuanto más seguro sea el grupo al que pertenece el usuario, más información PAC se inserta en la señal Kerberos y más largo se vuelve SPNEGO. IBM HTTP Server 2.0 (también Apache 2.0 e IBM HTTP Server 6.0) limita el tamaño de cualquier cabecera HTTP aceptable a 8K. En dominios Microsoft Windows con varios grupos, y usuarios que pertenecen a varios grupos, el tamaño de la señal SPNEGO del usuario puede superar el límite de 8K. | Si es posible, reduzca el número de grupos de seguridad de los cuales el usuario es miembro. El fixpack PK01070 de
IBM HTTP Server 2.0.47 permite que el tamaño de la cabecera de HTTP aumente e ,incluso, que supere el límite de
Microsoft de 12K. Los usuarios de
WebSphere Application Server versión 6.0 pueden obtener este arreglo en el fix 6.0.0.2. Nota: Es posible que
los servidores web no basados en Apache necesiten soluciones diferentes.
|
Problema: Incluso con el rastreo JGSS inhabilitado, aparecen algunos mensajes KRB_DBG_KDC en el archivo SystemOut.log
Síntoma | Descripción | Acción del usuario |
---|---|---|
Examine el archivo SystemOut.log y observe que algunos mensajes KRB_DBG_KDC aparecen incluso cuando el rastreo está inhabilitado. | Aunque la mayoría del rastreo JGSS está controlada por la propiedad com.ibm.security.jgss.debug, un pequeño conjunto de mensajes está controlado por la propiedad com.ibm.security.krb5.Krb5Debug. La propiedad com.ibm.security.krb5.Krb5Debug tiene un valor por omisión para colocar mensajes en el archivo SystemOut.log. | Para eliminar
todos los mensajes KRB_DBG_KDC del archivo SystemOut.log, establezca la propiedad de la JVM del modo siguiente:
|
Problema: Cuando una aplicación contiene una página de error HTTP 401 personalizada, la página de respuesta HTTP generada por SPNEGO TAI no se muestra en el navegador.
Síntoma | Descripción | Acción del usuario |
---|---|---|
Cuando una aplicación contiene una página de error HTTP 401 personalizada, la página de respuesta HTTP generada por SPNEGO (Simple and Protected GSS-API Negotiation Mechanism) TAI (Trust Association Interceptor) no se muestra en el navegador. | Cuando una aplicación contiene una página de error HTTP 401 personalizada, la página de respuesta HTTP generada por SPNEGO TAI no se muestra en el navegador. En su lugar se muestra la página de error HTTP 401 personalizada. | Puede personalizar la página HTTP 401 para que incluya información relacionada con el modo de configurar el navegador para que utilice SPNEGO. Para obtener más información, consulte Configuración del navegador de cliente para utilizar SPNEGO TAI (en desuso) y Configuración de propiedades personalizadas de TAI SPNEGO (obsoleto). |
Problema: Los parámetros Post de HTTP se han perdido durante la interacción con el SPNEGO TAI, renunciando al inicio de sesión de ID de usuario/contraseña.
Síntoma | Descripción | Acción del usuario |
---|---|---|
Los parámetros Post de HTTP se pierden durante la interacción con el SPNEGO TAI, renunciando al inicio de sesión de ID de
usuario/contraseña. "El inicio de sesión con ID de usuario/contraseña" quiere decir que Microsoft Internet Explorer intenta responder inicialmente con una señal SPNEGO. Si esta respuesta no es satisfactoria, entonces Microsoft Internet Explorer intenta responder con una señal NTLM que se obtiene a través de una solicitud de ID de usuario/contraseña. |
Microsoft Internet Explorer
mantiene el estado durante una solicitud del usuario. Si una solicitud recibió una respuesta
del tipo "HTTP 401 Authenticate Negotiate" y el navegador responde con una señal NTLM obtenido a
través de la verificación del id de usuario/contraseña, el navegador reenvía la solicitud. Si esta segunda solicitud recibió una respuesta de una página
HTML que contiene una redirección al mismo URL pero con argumentos nuevos (a través de Javascript), el navegador no reenvía los parámetros POST. Nota: Para evitar este problema, es muy importante NO realizar
la redirección automática. Si el usuario pulsa un enlace, el problema no se produce.
|
El navegador responde a la verificación de la pregunta de contraseña Autenticar/Negociar con una señal NTLM, o una señal SPNEGO. El SPNEGO TAI ve el gestor NTLM, y devuelve una respuesta HTTP 403, junto con la página HTML. Cuando el navegador ejecuta la función JavaScript redirTimer, se pierde cualquier parámetro POST o GET incluido en la solicitud original. Al utilizar la propiedad SPN<id>.NTLMTokenReceivedPage, se puede devolver una página de mensaje apropiada al usuario. El mensaje predeterminado que se devuelve (en la ausencia
de una propiedad definida por el usuario) es:
Utilizando la propiedad SPN<id>.NTLMTokenReceivedPage, puede personalizar la respuesta exacta. Es importante que el HTML devuelto no realice una redirección. Si el SPNEGO TAI se ha configurado para utilizar la clase predeterminada HTTPHeaderFilter incluida como SPN<id>.filterClass, puede utilizarse SPN<id>.filter para permitir que la segunda solicitud fluya directamente en el mecanismo normal de seguridad de WebSphere Application Server. De esta forma, el usuario experimenta el mecanismo normal de autenticación. A continuación se ofrece
un ejemplo de una configuración de este tipo, en la que se muestran las propiedades de SPNEGO TAI
necesarias y el contenido del archivo HTML.
Nota: Observe que la propiedad de filtro insta al SPNEGO TAI que NO
intercepte ninguna petición HTTP que contenga la serie "noSPNEGO".
Aquí aparece un ejemplo de generación de una respuesta práctica.
|
Problema: El interceptor de asociación de confianza (TAI) no llama al método initialize(Properties)
El rastreo puede mostrar que TAI está cargado, pero no se llama al método initialize(Properties). Sólo el método getVersion() parece llamarse durante el arranque.
El proceso de TAI de WebSphere sólo llama a initialize(Properties) cuando hay propiedades personalizadas definidas para el TAI.
Para corregir este problema, defina una propiedad personalizada del TAI no utilizada, como com.ibm.issw.spnegoTAI.NumberOfServers=0.
Problema: El interceptor de asociación de confianza (TAI) no se carga correctamente
SPNEGO014: Anomalía de inicialización de Kerberos: org.ietf.jgss.GSSException, Código principal: 13, Código secundario: 0
serie principal: Credenciales no válidas
serie secundaria: SubjectKeyFinder: no hay ningún sujeto JAAS
en com.ibm.security.jgss.i18n.I18NException.throwGSSException(I18NException.java:12)
…
Una posible causa de este problema es que la propiedad personalizada de JVM javax.security.auth.useSubjectCredsOnly no está establecida con el valor false.
Para corregir este problema, defina una propiedad personalizada JVM en cada JVM que esté habilitada para el TAI, javax.security.auth.useSubjectCredsOnly=false.
Problema: Los caracteres predeterminados de scripts JACL para añadir parámetros de interceptor de asociación de confianza (TAI) pueden causar problemas
Los scripts JACL para añadir parámetros de TAI aceptan parámetros de posición. Para aceptar los valores predeterminados, se especifica ".". En algunas plataformas WebSphere, si especifica un "." puede hacer que la propiedad se añada con un valor de ".".
Independientemente de la plataforma, confirme siempre que las propiedades se añaden de la forma esperada utilizando la consola de administración. Si no es así, corríjalas manualmente.