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

StackOverflow https://stackoverflow.com/questions/211133

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

sqlplus /

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

Тонкий драйвер 11g может подключаться с помощью аутентификации Kerberos.

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

попробуйте следовать jdbc:oracle:thin:username/password@localhost:1521:MYDBSID

вам необходимо указать информацию об учетной записи

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

Поддержка аутентификации операционной системы в тонком драйвере 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.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top