Подключение к Oracle без имени пользователя и пароля

У Oracle есть концепция, позволяющая пользователям базы данных идентифицироваться пользователем операционной системы, который запускает программу, которая подключается к Oracle. См. здесь.

Это позволяет вам выполнять, например, как этот пользователь на машине unix, такую ​​​​команду, как:

sqlplus /

Я пытаюсь написать программу Java для Oracle 10.2, которая подключается без имени пользователя или пароля. Очевидный выбор URL:

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

не работает, выдает ошибку (извините, у меня сейчас нет этой ошибки).

Я пробовал много других способов сделать это, но безуспешно.

Есть ли у кого-нибудь предложения о том, как я могу подключить программу Java к Oracle, используя метод идентификации ОС?


person Jamie Love    schedule 17.10.2008    source источник


Ответы (8)


Драйвер JDBC Thin представляет собой 100% чистую реализацию Java, которая не может собирать необходимую информацию из операционной системы.

Драйвер JDBC OCI может это сделать! Используйте jdbc:oracle:oci8:/@MYDBSID, для этого потребуется, чтобы драйвер Oracle был установлен на этой машине, не проблема, если это сервер (и быстрее загружается и поддерживает гораздо больше функций, чем тонкий драйвер)

person Tony BenBrahim    schedule 17.10.2008
comment
Это справедливо для более старых версий драйверов Oracle JDBC, но не для более новых версий (ojdbc5.jar и ojdbc6.jar). Вы все равно должны дать соединение пользователю, но оно должно работать в соответствии с документацией здесь: download.oracle.com/docs/cd/B28359_01/java.111/b31224/ - person Nick; 17.02.2010

Драйвер jdbc, поставляемый Oracle, НЕ имеет возможности собирать имя пользователя и пароль ОС из предоставленного вами URL-адреса. Предположим, что есть сторонние поставщики драйверов JDBC для ORACLE, один из них может предоставить запрашиваемую вами функциональность. Вы должны Google вокруг.

person anjanb    schedule 17.10.2008

Спасибо ответившим. Мы поехали с водителем OCI.

Я нашел документацию, в которой говорится, что Oracle 11g действительно поддерживает аутентификацию пользователей ОС через тонкий драйвер:

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

У меня нет настройки 11g, чтобы проверить это, поэтому я не могу быть уверен, что это работает.

person Jamie Love    schedule 19.10.2008
comment
Просто для информации: использование тонкого драйвера JDBC Oracle 11g в базе данных Oracle 10g работает с аутентификацией пользователя ОС (я проверял это). Но имейте в виду, что это не совсем безопасно, так как можно программно изменить упомянутое выше свойство. Даже если удаленная аутентификация ОС не разрешена, запуск программы на том же компьютере от неавторизованного пользователя в этом случае по-прежнему сопряжен с высоким риском. - person Hans Doggen; 16.01.2010
comment
Будет ли драйвер работать для строки подключения /@TWO_TASK с настроенным Oracle Wallet? Есть ли пример кода подключения Java? - person johnsam; 10.01.2015

Поддержка аутентификации ОС в тонком драйвере JDBC была добавлена ​​в версии 11g (вы можете загрузить тонкий драйвер JDBC с версии 11.2.0.4 на OTN).

Обратите внимание, что вы должны разрешить удаленную аутентификацию ОС на сервере (через TCP), иначе он будет работать только с sqlplus с использованием IPC или BEQ локально. В файле init.ora добавьте следующее:

REMOTE_OS_AUTHENT = TRUE

Затем, если вы используете «osuserdemo» на клиентской машине, создайте такого пользователя базы данных и перезапустите БД:

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

И тонкий драйвер JDBC должен иметь возможность подключаться без имени пользователя или пароля.

Стоит отметить, что эта функция, считавшаяся крайне незащищенной, была прекращена в версии 12c.

person Jean de Lavarene    schedule 17.06.2015

Если вы обращаетесь к Oracle с сервера приложений J2EE, вы можете добиться аналогичного результата, используя JNDI для получения источника данных.

person tunaranch    schedule 17.10.2008

Тонкий драйвер весом 11 г может подключаться с использованием проверки подлинности Kerberos.

См. раздел Подключение к базе данных Oracle с помощью Kerberos.

person RealHowTo    schedule 04.08.2010

попробуйте выполнить jdbc:oracle:thin:username/password@localhost:1521:MYDBSID

необходимо указать данные учетной записи

sqlplus / as sysdba на машине unix, которая проходит аутентификацию операционной системы

person Ricky    schedule 14.12.2011

jdbc:oracle:oci:@ работает с ojdbc6.jar и Oracle 11g2

person evgeny    schedule 17.06.2015