2008-10-17 14 views
5

Oracle hat dieses Konzept, um zu ermöglichen, dass Datenbankbenutzer vom Betriebssystembenutzer identifiziert werden, der das Programm ausführt, das eine Verbindung zu Oracle herstellt. Siehe here.Verbindung zu Oracle ohne Benutzername oder Passwort

Auf diese Weise können Sie tun, als dieser Benutzer auf einem UNIX-Rechner beispielsweise ein Befehl wie:

sqlplus/

ich ein Java-Programm für Oracle 10.2 zu schreiben versucht bin, die ohne Benutzername oder Passwort verbindet . Die offensichtliche Wahl der url:

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

nicht funktioniert, einen Fehler geben (Leider habe ich den Fehler nicht sofort verfügbar).

Ich habe viele andere Formen versucht, dies auch zu tun, aber ohne Glück.

Hat jemand irgendwelche Vorschläge, wie ich ein Java-Programm mit Oracle mithilfe der Betriebssystem-Identifikationsmethode verbinden kann?

Antwort

5

Der JDBC Thin-Treiber ist eine 100% reine Java-Implementierung, die die erforderlichen Informationen vom Betriebssystem nicht sammeln kann.

Der JDBC OCI-Treiber kann dies tun! Verwenden Sie jdbc:oracle:oci8:/@MYDBSID, es wird vorausgesetzt, dass der Oracle-Treiber auf diesem Computer installiert ist, kein Problem, wenn dies ein Server ist (und ist schneller zu booten und unterstützt viele weitere Funktionen als der Thin-Treiber)

+2

Dies gilt für ältere Versionen von Oracle JDBC Drivers, nicht jedoch für die neueren Versionen (ojdbc5.jar und ojdbc6.jar). Sie müssen dem Benutzer die Verbindung dennoch geben, aber es sollte gemäß der Dokumentation hier funktionieren: http://download.oracle.com/docs/cd/B28359_01/java.11/b31224/clntsec.htm#CIHCBCBC – Nick

1

Der jdbc-Treiber, den Orakelschiffe haben, ist NICHT in der Lage, den Betriebssystembenutzernamen und das Kennwort von der von Ihnen angegebenen URL zu erfassen. Angenommen, es gibt JDBC-Treiber-Provider von Drittanbietern für ORACLE, von denen einer die von Ihnen gewünschte Funktionalität bietet. Sie sollten googeln.

0

Wenn Sie auf Oracle zugreifen Von einem J2EE-Anwendungsserver können Sie ein ähnliches Ende erreichen, indem Sie JNDI zum Erwerb einer Datenquelle verwenden.

1

Danke an diejenigen, die geantwortet haben. Wir sind mit dem OCI-Treiber gegangen.

Ich habe Dokumentation dafür, dass Oracle 11g tut Unterstützung OS-Benutzerauthentifizierung über den Thin-Treiber aber:

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

Ich habe keine 11g Setup haben, dies zu testen, auf, so dass ich kann nicht sicher sein, dass das funktioniert.

+0

Nur für Ihre Informationen: Die Verwendung des Oracle 11g JDBC Thin-Treibers in einer Oracle 10g-Datenbank funktioniert mit der Benutzerauthentifizierung des Betriebssystems (ich habe es getestet). Aber sei dir bewusst, dass es nicht wirklich sicher ist, da man die oben erwähnte Eigenschaft programmatisch ändern kann. Selbst wenn die Remote-BS-Authentifizierung nicht zulässig ist, ist das Ausführen eines Programms auf demselben Computer von einem nicht autorisierten Benutzer in diesem Fall immer noch ein hohes Risiko. –

+0

Funktioniert der Treiber für Verbindungszeichenfolge/@ TWO_TASK mit Oracle Wallet? Gibt es einen Beispiel-Java-Verbindungscode? – johnsam

0

try folgenden jdbc: oracle: thin: Benutzername/Passwort @ localhost: 1521: MYDBSID

Sie die Kontoinformationen

sqlplus/as sysdba auf einem Unix angeben müssen Maschine, die durch das Betriebssystem Authentisierung gehen

-1

jdbc:oracle:oci:@ arbeitet mit ojdbc6.jar und Oracle 11g2

0

OS-Authentifizierung Unterstützung in der JDBC-Thin-Treiber wurde in 11g hinzugefügt (Sie können den JDBC-Thin-Treiber von 11.2.0.4 auf OTN herunterladen).

Beachten Sie, dass Sie die Remote-Betriebssystemauthentifizierung auf dem Server (über TCP) zulassen müssen, da dies sonst nur mit sqlplus unter Verwendung von IPC oder BEQ lokal funktioniert. In Ihrer Datei init.ora, fügen Sie diese:

REMOTE_OS_AUTHENT = TRUE 

Dann, wenn Sie Benutzer „osuserdemo“ auf dem Client-Rechner ist, einen Datenbankbenutzer wie folgt erstellen und starten Sie den DB:

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

Und die Der JDBC Thin-Treiber sollte in der Lage sein, sich ohne Benutzernamen und Passwort zu verbinden.

Es ist erwähnenswert, dass diese Funktion, die als höchst ungesichert gilt, in 12c nicht mehr unterstützt wird.

Verwandte Themen