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?

¿Fue útil?

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 admite la autenticación del usuario del sistema operativo a través del controlador ligero:

http://www.or /public/Oracle_JDBC_JavaDoc/javadoc1110/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_OSUSER

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top