es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error con la autenticación principal Kerberos en Java 11: KRB_CRED no generado correctamente.

java.sql.SQLRecoverableException: Error de E/S: El servicio en proceso no es compatible. Operación no disponible (Nivel de mecanismo: KRB_CRED no se generó correctamente).

Estoy obteniendo esta excepción cuando mi HikariDataSource intenta establecer una conexión con mi base de datos de Oracle utilizando Kerberos como medio de autenticación.

Estoy seguro de que el problema tiene algo que ver con mi principio no siendo aceptado a pesar de que mi archivo de caché de credenciales funciona perfectamente bien para mis otros proyectos de Java 8.

La razón por la que creo que es un problema con el principal es porque tengo un archivo de caché de credenciales separado que se genera en mi servidor y que utiliza un principal diferente al que usaría localmente. Ese archivo de caché de credenciales de mi servidor funciona perfectamente bien cuando se usa localmente para este proyecto de Java 11. Sin embargo, no puedo generar archivos de caché de credenciales localmente con ese principal.

Además, estoy utilizando el mismo archivo krb5.conf, por lo que no entiendo cómo mi principal está siendo aceptado por un servicio pero no por otro… También me aseguré de utilizar la versión de Java 11 del archivo kinit.exe al ejecutar el siguiente comando, aunque no creo que eso importe.

$kinit -c archivo_de_caché_de_credenciales instancia@dominio.realm

El uso de otras banderas como -A, -p, -f también me da un error separado, pero ese tipo de archivo de caché de credenciales no funcionará para ninguno de mis servicios de Java 8 o Java 11.

java.nio.BufferOverflowException: nulo

EDITAR:
El error de nivel más bajo que realmente estoy obteniendo es este.

Caused by: sun.security.krb5.KrbException: Opción no válida en la solicitud de ticket. (101)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas java.sql.SQLRecoverableException al usar autenticación kerberos para un proyecto de oracle java 11

    Problema

    Cuando se intenta establecer una conexión con una base de datos oracle utilizando HikariDataSource con kerberos como medio de autenticación, se produce la siguiente excepción java.sql.SQLRecoverableException:

    java.sql.SQLRecoverableException: Error de E/S: El servicio en proceso no es compatible. Operación no disponible (Nivel de mecanismo: KRB_CRED no generado correctamente.)
    

    Diagnóstico

    El problema puede estar relacionado con el principal que no está siendo aceptado. Esto fue confirmado por el hecho de que el archivo de caché de credenciales funciona perfectamente bien para otros proyectos de java 8, pero no para este proyecto de java 11. El archivo de caché de credenciales generado en el servidor utilizando un principal diferente funciona bien cuando se utiliza localmente para el proyecto de java 11, pero no se puede generar localmente con ese principal.

    Posible solución

    Puede haber un problema con las opciones que se utilizan al generar el ticket. El error de nivel más bajo sugiere que hay una opción no válida en la solicitud del ticket. Intente utilizar la bandera -n al generar el ticket:

    $kinit -n -c archivo_de_caché_de_credenciales instancia@dominio.reino
    

    Además, asegúrese de que el archivo krb5.conf sea el mismo y que se utilice la versión java 11 del archivo kinit.exe.

    Si se utilizan otras banderas como -A, -p o -f, puede producirse una excepción java.nio.BufferOverflowException. Este tipo de archivo de caché de credenciales no funcionará para servicios de java 8 o java 11.

Comments are closed.