2008-10-17 33 views
5

Oracle tiene este concepto de permitir que los usuarios de bases de datos sean identificados por el usuario del sistema operativo que ejecuta el programa que se conecta a Oracle. Ver here.Conexión a Oracle sin nombre de usuario o contraseña

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 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 está 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 utilizando el método de identificación del sistema operativo?

Respuesta

5

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 es un servidor (y es más rápido de arrancar y admite muchas más características que el controlador delgado)

+2

Esto se aplica a las versiones anteriores de los controladores JDBC de Oracle pero no a las versiones más recientes (ojdbc5.jar y ojdbc6.jar). Aún debe proporcionar la conexión al usuario, pero debería funcionar de acuerdo con la documentación aquí: http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/clntsec.htm#CIHCBCBC – Nick

1

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 le proporcionó. Supongamos que hay proveedores de controladores JDBC de terceros para ORACLE, uno de ellos puede proporcionar la funcionalidad que está solicitando. deberías googlear alrededor.

0

Si está accediendo a Oracle desde un servidor de aplicaciones J2EE, podría lograr un fin similar utilizando JNDI para adquirir un origen de datos.

1

Gracias a los que respondieron. Nos hemos ido con el controlador OCI.

lo hice encontrar documentación para sugerir que Oracle 11g hace soporte de autenticación de usuario del sistema operativo a través del controlador fino sin embargo:

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

que no tienen una configuración 11g para probar esto en, por lo que no puede estar seguro de que esto funcione.

+0

Solo para su información: el uso del controlador delgado Oracle 11g JDBC en una base de datos Oracle 10g funciona con la autenticación de usuario del sistema operativo (lo he probado). Pero tenga en cuenta que no es realmente seguro, ya que uno puede cambiar programáticamente la propiedad mencionada anteriormente. Incluso si la autenticación remota del sistema operativo no está permitida, ejecutar un programa en la misma máquina de un usuario no autorizado sigue siendo un alto riesgo en este caso. –

+0

¿Funcionará el controlador para la cadena de conexión/@ TWO_TASK con la configuración de Oracle Wallet? ¿Hay algún código de conexión Java de muestra? – johnsam

0

intento siguiente jdbc: oracle: thin: nombre de usuario/contraseña @ localhost: 1521: MYDBSID

es necesario especificar la información de la cuenta

sqlplus/as sysdba en un UNIX máquina que pasa por el sistema de operación autenticación

-1

jdbc:oracle:oci:@ funciona con ojdbc6.jar y Oracle 11g2

0

El soporte de autenticación del sistema operativo en el controlador delgado JDBC se agregó en 11g (puede descargar el controlador JDBC thin 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 el archivo init.ora, añadir lo siguiente:

REMOTE_OS_AUTHENT = TRUE 

A continuación, si el usuario es "osuserdemo" en la máquina cliente, crear un usuario de base de datos como este y reiniciar la base de datos:

CREATE USER OSUSERDEMO IDENTIFIED EXTERNALLY; 
GRANT CONNECT,CREATE SESSION,RESOURCE TO OSUSERDEMO; 

Y el El controlador delgado JDBC debería ser capaz de conectarse sin ningún nombre de usuario o contraseña.

Vale la pena señalar que esta característica, considerada no segura, ha sido eliminada en 12c.

Cuestiones relacionadas