2008-10-17 24 views
5

Oracle ma tę koncepcję zezwalania użytkownikom bazy danych na identyfikację przez użytkownika systemu operacyjnego, który uruchamia program łączący się z Oracle. Zobacz here.Połączenie z Oracle bez nazwy użytkownika lub hasła

Pozwala to zrobić, jak tego użytkownika na maszynie UNIX, na przykład, polecenie takie jak:

sqlplus/

Ja próbuje napisać program Java dla Oracle 10.2, który łączy bez nazwy użytkownika lub hasła . Oczywisty wybór adresu URL:

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

nie działa, powodując błąd (Niestety nie mam obecnie dostępnego błędu).

Próbowałem wielu innych sposobów robienia tego również, ale bez powodzenia.

Czy ktoś ma jakieś sugestie, w jaki sposób mogę połączyć program Java z Oracle przy użyciu metody identyfikacji systemu operacyjnego?

Odpowiedz

5

Sterownik JDBC Thin to w 100% czysta implementacja Java, która nie może zebrać potrzebnych informacji z systemu operacyjnego.

Sterownik JDBC OCI może to zrobić! Użyj jdbc:oracle:oci8:/@MYDBSID, będzie wymagać, aby sterownik Oracle był zainstalowany na tym komputerze, nie jest to problemem, jeśli jest to serwer (i jest szybszy do rozruchu i obsługuje wiele więcej funkcji niż cienki sterownik)

+2

Dotyczy to starszych wersji sterowników Oracle JDBC Drivers, ale nie jest zgodne z nowszymi wersjami (ojdbc5.jar i ojdbc6.jar). Nadal musisz podać połączenie użytkownikowi, ale powinno działać zgodnie z dokumentacją tutaj: http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/clntsec.htm#CIHCBCBC – Nick

1

Sterownik jdbc, którego wyrocznia wysyła, NIE ma możliwości zebrania nazwy użytkownika systemu operacyjnego i hasła z podanego adresu URL. Załóżmy, że istnieją dostawcy JDBC zewnętrznego dostawcy dla ORACLE, jeden z nich może zapewnić żądaną funkcjonalność. powinieneś zaglądać w Google.

0

Jeśli korzystasz z Oracle z serwera aplikacji J2EE można osiągnąć podobny koniec, używając JNDI do pozyskania źródła danych.

1

Dzięki tym, którzy odpowiedzieli. Pracowaliśmy ze sterownikiem OCI.

znalazłem dokumentacji wynika, że ​​Oracle 11g robi uwierzytelniania użytkownika OS support poprzez cienką kierowcy mimo:

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

nie mieć konfigurację 11g przetestować to na, więc ja nie może być pewny, że to działa.

+0

Tylko dla twoje informacje: używanie cienkiego sterownika JDBC Oracle 11g w bazie danych Oracle 10g działa z uwierzytelnianiem użytkownika OS (testowałem to). Należy jednak pamiętać, że nie jest to naprawdę bezpieczne, ponieważ można programowo zmienić wspomnianą wyżej właściwość. Nawet jeśli zdalne uwierzytelnianie systemu operacyjnego nie jest dozwolone, uruchamianie programu na tym samym komputerze od nieautoryzowanego użytkownika nadal stanowi duże ryzyko w tym przypadku. –

+0

Czy sterownik będzie pracował dla ciągu połączenia/@ TWO_TASK z konfiguracją Oracle Wallet? Czy istnieje przykładowy kod połączenia Java? – johnsam

0

try po JDBC Oracle: cienkie: login/hasło @ localhost: 1521: MYDBSID

musisz podać informacje o koncie

sqlplus/as sysdba na UNIX maszyna przechodząca przez uwierzytelnianie systemu operacyjnego

-1

jdbc:oracle:oci:@ współpracuje z ojdbc6.jar i Oracle 11g2

0

Obsługa uwierzytelniania systemu operacyjnego w cienkim sterowniku JDBC została dodana w 11g (można pobrać cienki sterownik JDBC z 11.2.0.4 na OTN).

Pamiętaj, że musisz zezwolić na zdalne uwierzytelnianie systemu operacyjnego na serwerze (przez TCP), w przeciwnym razie będzie działać tylko z sqlplus używając IPC lub BEQ lokalnie. W pliku init.ora, dodać to:

REMOTE_OS_AUTHENT = TRUE 

Następnie, jeśli użytkownik jest „osuserdemo” na komputerze klienckim, należy utworzyć użytkownika bazy danych tak, a ponowne uruchomienie DB:

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

a Cienki sterownik JDBC powinien móc łączyć się bez nazwy użytkownika lub hasła.

Warto zauważyć, że ta funkcja - uważana za wysoce niezabezpieczoną - została wycofana w wersji 12c.

Powiązane problemy