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)
davy.ai
Solución de problemas
java.sql.SQLRecoverableException
al usar autenticaciónkerberos
para un proyecto deoracle
java 11
Problema
Cuando se intenta establecer una conexión con una base de datos
oracle
utilizandoHikariDataSource
conkerberos
como medio de autenticación, se produce la siguiente excepciónjava.sql.SQLRecoverableException
: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 dejava 11
. El archivo de caché de credenciales generado en el servidor utilizando un principal diferente funciona bien cuando se utiliza localmente para el proyecto dejava 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:Además, asegúrese de que el archivo
krb5.conf
sea el mismo y que se utilice la versiónjava 11
del archivokinit.exe
.Si se utilizan otras banderas como
-A
,-p
o-f
, puede producirse una excepciónjava.nio.BufferOverflowException
. Este tipo de archivo de caché de credenciales no funcionará para servicios dejava 8
ojava 11
.