Строка подключения Oracle с аутентификацией Windows - PullRequest
4 голосов
/ 12 января 2012

У нас есть требование, чтобы наши продукты работали как на Oracle, так и на SQL Server (вокруг которого они изначально были построены). К сожалению, у нас нет собственного опыта разработки Oracle, но я, будучи старшим разработчиком, возглавил проект. До сих пор мне удалось подключить наше приложение к базе данных Oracle (я использую Oracle XE 11.2) с помощью следующей строки подключения:

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=VS010-ORA11GR1)(PORT=1523))(CONNECT_DATA=(SERVICE_NAME=DEVORA)));User Id=dbo;Password=dbo;

Причина, по которой мы решили использовать этот тип строки подключения, заключается в том, что мы не хотим полагаться на изменение tnsnames.ora на каждом клиентском компьютере. Однако, как вы можете видеть, это указывает пользователя Oracle и связанный пароль. Нам также необходимо предоставить возможность использовать эквивалент интегрированной безопасности SQL Server.

Согласно литературе, которую я прочитал, для этого мне просто нужно указать / в качестве идентификатора пользователя, а затем пропустить парольную часть (так как это все равно игнорируется для аутентификации Windows). Я также создал пользователя в Oracle, убедившись, что он соответствует пользователю Windows, со следующими фрагментами:

CREATE USER "OPS$<DOMAIN>\<user>" IDENTIFIED EXTERNALLY;

GRANT CONNECT,RESOURCE TO "OPS$<DOMAIN>\<user>";

Я также проверил, что файл sqlnet.ora на моем локальном компьютере, на котором находится экземпляр XE, и среда разработки содержат строку:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

Я понял, что это позволит моему приложению подключаться к базе данных Oracle с помощью аутентификации Windows. Однако на самом деле происходит следующее сообщение об ошибке Oracle:

ORA-01005: указан нулевой пароль; вход запрещен

это не имеет особого смысла, потому что, конечно, оно нулевое - оно должно быть, согласно прочитанным мною учебникам.

Приложение предназначено для .Net Framework 3.5, мы используем System.Data.OracleProvider, а фактическое подключение и т. Д. Обрабатывается Enterprise Library 5. Кстати, я знаю об устаревании компонента OracleClient, но я просто хочу это сработает, прежде чем я начну разбираться со сложностями смены провайдеров.

Может кто-нибудь сказать мне, что мне не хватает? Я выбрал неправильный тип строки подключения? Я прошу прощения за любые основные ошибки, но мне всегда удавалось избегать Oracle до сих пор, поэтому мои знания об этом близки к нулю.

Большое спасибо

Ответы [ 2 ]

1 голос
/ 20 марта 2015

Чтобы расширить ответ выше @Stikut. Я проверил это с NHibernate 3.3.3.GA, и он работает.

user id=/;password=;Integrated Security=yes
1 голос
/ 12 февраля 2012

У меня была такая же проблема, и я решил ее после добавления в conn. строка:

Integrated Security=yes
...