Question

Oracle propose aux utilisateurs de la base de données d'être identifiés par l'utilisateur du système d'exploitation exécutant le programme qui se connecte à Oracle. Voir ici .

Ceci vous permet de faire, comme cet utilisateur sur un ordinateur unix par exemple, une commande telle que:

sqlplus /

J'essaie d'écrire un programme Java pour Oracle 10.2 qui se connecte sans nom d'utilisateur ni mot de passe. Le choix évident de l'URL:

jdbc:oracle:thin:/@localhost:1521:MYDBSID

ne fonctionne pas, générant une erreur (désolé, l'erreur n'est pas disponible pour le moment).

J'ai essayé beaucoup d'autres méthodes, mais sans succès.

Quelqu'un at-il des suggestions sur la manière de connecter un programme Java à Oracle à l'aide de la méthode d'identification du système d'exploitation?

Était-ce utile?

La solution

Le pilote JDBC Thin est une implémentation 100% Java pure qui ne peut pas collecter les informations nécessaires à partir du système d'exploitation.

Le pilote JDBC OCI peut le faire! Utilisez jdbc: oracle: oci8: / @ MYDBSID , il faudra que le pilote Oracle soit installé sur cette machine et non un problème s'il s'agit d'un serveur (il est plus rapide à démarrer et prend en charge de nombreuses fonctionnalités que le pilote léger)

Autres conseils

Le pilote jdbc fourni par oracle N'A PAS la capacité de collecter le nom d'utilisateur et le mot de passe du système d'exploitation à partir de l'URL que vous lui avez fournie. Supposons qu'il existe des fournisseurs de pilotes JDBC tiers pour ORACLE, l'un d'entre eux pouvant fournir les fonctionnalités que vous demandez. vous devriez google autour.

Merci à ceux qui ont répondu. Nous sommes allés avec le pilote OCI.

J'ai trouvé une documentation suggérant qu'Oracle 11g prend en charge l'authentification des utilisateurs du système d'exploitation via le pilote léger:

Si vous accédez à Oracle à partir d'un serveur d'applications J2EE, vous pouvez obtenir un résultat similaire en utilisant JNDI pour acquérir une source de données.

essayez de suivre jdbc: oracle: thin: nom d'utilisateur / mot de passe @ localhost: 1521: MYDBSID

vous devez spécifier les informations du compte

sqlplus / as sysdba sur une machine unix qui passe par l’authentification du système d’exploitation

La prise en charge de l'authentification du système d'exploitation dans le pilote léger JDBC a été ajoutée dans la version 11g (vous pouvez télécharger le pilote léger JDBC à partir de la version 11.2.0.4 sur OTN).

Notez que vous devez autoriser l'authentification du système d'exploitation à distance sur le serveur (via TCP), sinon cela fonctionnera uniquement avec sqlplus en utilisant IPC ou BEQ localement. Dans votre fichier init.ora, ajoutez ceci:

REMOTE_OS_AUTHENT = TRUE

Dans ce cas, si votre utilisateur est & os; osuserdemo " sur la machine cliente, créez un utilisateur de base de données comme celui-ci et redémarrez la base de données:

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

Le pilote léger JDBC devrait pouvoir se connecter sans nom d'utilisateur ni mot de passe.

Il est à noter que cette fonctionnalité (considérée comme hautement non sécurisée) a été supprimée de la version 12c.

jdbc: oracle: oci: @ fonctionne avec ojdbc6.jar et Oracle 11g2

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top