Conexión a Oracle sin un nombre de usuario o contraseña
-
03-07-2019 - |
Pregunta
Oracle tiene este concepto de permitir que los usuarios de la base de datos sean identificados por el usuario del sistema operativo que ejecuta el programa que se está conectando a Oracle. Consulte aquí .
Esto le permite hacer, como ese usuario en una máquina Unix, por ejemplo, un comando como:
sqlplus /
Estoy intentando escribir un programa Java para Oracle 10.2 que se conecta sin un nombre de usuario o contraseña. La elección obvia de url:
jdbc:oracle:thin:/@localhost:1521:MYDBSID
no funciona, dando un error (Lo siento, no tengo el error disponible en este momento).
He intentado muchas otras formas de hacer esto también, pero sin suerte.
¿Alguien tiene alguna sugerencia sobre cómo puedo conectar un programa Java a Oracle usando el método de identificación del sistema operativo?
Solución
El controlador JDBC Thin es una implementación de Java 100% pura que no puede recopilar la información necesaria del sistema operativo.
¡El controlador JDBC OCI puede hacer esto! Use jdbc: oracle: oci8: / @ MYDBSID
, requerirá que el controlador de Oracle esté instalado en esa máquina, no es un problema si este es un servidor (y es más rápido de arrancar y admite muchas más funciones) que el controlador delgado)
Otros consejos
El controlador jdbc que Oracle envía NO tiene la capacidad de recopilar el nombre de usuario y la contraseña del sistema operativo de la URL que usted proporciona. Supongamos que hay proveedores de controladores JDBC de terceros para ORACLE, uno de ellos puede proporcionar la funcionalidad que está solicitando. deberías buscar en Google.
Gracias a los que respondieron. Nos hemos ido con el controlador OCI.
Encontré documentación que sugiere que Oracle 11g sí admite la autenticación del usuario del sistema operativo a través del controlador ligero:
No tengo una configuración de 11g para probar esto, así que no puedo estar seguro de que esto funcione.
Si accede a Oracle desde un servidor de aplicaciones J2EE, puede lograr un fin similar utilizando JNDI para adquirir una fuente de datos.
El controlador delgado 11g se puede conectar mediante la autenticación Kerberos.
Consulte Conéctese a una base de datos Oracle usando Kerberos
intenta seguir jdbc: oracle: thin: username / password @ localhost: 1521: MYDBSID
necesita especificar la información de la cuenta
sqlplus / as sysdba en una máquina Unix que pasa por la autenticación del sistema operativo
La compatibilidad con la autenticación del sistema operativo en el controlador delgado JDBC se agregó en 11g (puede descargar el controlador delgado JDBC desde 11.2.0.4 en OTN).
Tenga en cuenta que debe permitir la autenticación remota del sistema operativo en el servidor (a través de TCP); de lo contrario, solo funcionará con sqlplus utilizando IPC o BEQ localmente. En su archivo init.ora, agregue esto:
REMOTE_OS_AUTHENT = TRUE
Entonces, si su usuario es "osuserdemo" en la máquina cliente, cree un usuario de base de datos como este y reinicie la base de datos:
CREATE USER OSUSERDEMO IDENTIFIED EXTERNALLY;
GRANT CONNECT,CREATE SESSION,RESOURCE TO OSUSERDEMO;
Y el controlador delgado JDBC debería poder conectarse sin ningún nombre de usuario o contraseña.
Vale la pena señalar que esta característica, considerada como altamente insegura, ha sido cancelada en 12c.
jdbc: oracle: oci: @
funciona con ojdbc6.jar y Oracle 11g2