2014-10-16 3 views
8

У меня сложная ситуация на одном из наших серверов. У меня есть приложение ASP.NET MVC 3, которому необходимо подключиться к базе данных Oracle 12c. Он делает это, используя следующую строку соединения:Oracle.ManagedDataAccess и ORA-01017: неверное имя пользователя/пароль; logon denied

User ID=myuserid;Password=mypass;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<IP ADDRESS>)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME=PDB1))); 

Я также использую Oracle.ManagedDataAccess Oracle, версия 4.121.1.0. При каждой попытке подключения возникают следующие ошибки:

ORA-01017: invalid username/password; logon denied 

Я могу успешно подключиться на своем рабочем столе с указанными выше полномочиями. У меня такой же код на другом сервере, но с использованием старой, не управляемой версии библиотеки, и она может успешно соединяться с вышеупомянутыми учетными данными. Тем не менее, сервер, на котором я хочу, чтобы мой код запускался с ошибкой каждый раз, используя те же учетные данные, которые позволяют успешные соединения на разных серверах.

На сервере, который не могу:

  • подключить через SQLPLUS
  • попал в базу данных с TNSPING
  • Создание системы DSN для установления соединения ODBC

У меня есть проверили TNSNAMES.ORA во всех местах, и они выглядят правильно.

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

Я нахожусь на своем остроумие.

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

EDIT:

Я установил WireShark на локальном компьютере и на сервере обижая. Я захватил связь между моим рабочим столом и базой данных, а также злоумышленным сервером и базой данных. Я обнаружил, что мой рабочий стол сообщаться пароль:

0080 35 42 31 41 43 34 30 00 01 01 01 0d 0d 41 55 54 5B1AC40......AUT 
0090 48 5f 50 41 53 53 57 4f 52 44 01 40 40 43 30 36 [email protected]@C06 
00a0 37 39 42 31 31 42 46 36 42 41 43 44 39 30 38 44 79B11BF6BACD908D 
00b0 37 39 34 34 31 31 46 34 32 33 30 42 34 36 44 36 794411F4230B46D6 
00c0 35 36 36 33 31 42 45 39 39 41 36 43 36 37 42 44 56631BE99A6C67BD 
00d0 43 33 35 42 42 44 36 44 42 45 37 34 36 00 01 0d C35BBD6DBE746... 

тогда сервер, с которым у меня возникли проблемы, не (или, по крайней мере, это предположение):

0080 39 33 39 37 32 33 46 00 01 01 01 0d 0d 41 55 54 939723F......AUT 
0090 48 5f 50 41 53 53 57 4f 52 44 01 40 40 00 00 00 [email protected]@... 
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 
00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 
00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 0d ................ 

Кто-нибудь знает о безопасности/configuration, который предотвращает передачу паролей, даже если они присутствуют в строке соединения?

+0

Выстрел в темноте, возможно: я ценю, что вы не захотите делиться с нами именем пользователя и паролем, но по крайней мере было бы возможно поделиться с нами, какие не буквенно-цифровые символы они используют, если они есть? –

+1

Все стандартные, альфа-символы (d, g, c, m, n, e). Все строчные. Нет цифр. Я считаю, что вы можете ссылаться на некоторые проблемы, связанные с оракулом, где имя пользователя и/или пароль имеют специальные символы, такие как «e» с диакритической меткой. В этот момент, если бы что-то простое было, это было бы богом. :-) – DerHaifisch

+0

На самом деле, я думал больше символов iabout, таких как ':' или '?'. Если ваше имя пользователя и пароль содержат только строчные буквы, я могу только пожелать вам удачи. Сожалею! –

ответ

11

Я боролся с этой же проблемой в течение пары недель и, наконец, получил разрешение. Я должен был отключить политику FIPS безопасности, попробуйте установить этот ключ:

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ LSA \ FipsAlgorithmPolicy] "Enabled" = DWORD: 00000000

к нулю, она работала отлично для мне

Я следовал вашей теме ваш пустой вопрос пароль в конце концов, указал мне здесь:

https://community.oracle.com/thread/2557592?start=30&tstart=0

+0

Спасибо! Определенно собираюсь попробовать! – DerHaifisch

+0

Работала отлично для меня. Бесконечно благодарен!!! – DerHaifisch

+0

Зашел в эту проблему и разместил мой собственный вопрос, не зная, что я вижу то же самое, что и вы - http://dba.stackexchange.com/questions/142085/ora-01017-invalid-username-passwordlogon-denied - Оказывается, у меня была та же проблема, и именно так мне было предложено исправить мою. Работал! Таким образом, связывая этот вопрос с моим, в случае, если другие проходят другую процедуру устранения неполадок, чтобы добраться туда, где я был. – vapcguy

0

Попробуйте использовать одно из следующих действий в строке соединения:

  1. Data Source=username/[email protected]//myserver:1521/my.service.com;

  2. Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID))); User Id=myUsername;Password=myPassword;

Вы можете получить более подробную информацию here.

+0

Я действительно посмотрел на этом сайте; особенно на https://www.connectionstrings.com/oracle-data-provider-for-net-odp-net/, и пробовал о каждой соответствующей строке подключения, но все равно не имел успеха. Странно то, что я могу проверять журналы слушателей и видеть соединения, но мне становится отказано каждый раз, даже если имя пользователя и пароль верны. – DerHaifisch

+0

@DerHaifisch Используете ли вы идентификатор процесса для входа в базу данных? – Rex

+0

Я не уверен, что вы имеете в виду. Вы можете уточнить? – DerHaifisch

9

на основании ответа Джеффа (10/31/2014) ...

Настройки реестра могут быть установлены GPO, чтобы разрешать только алгоритмы, совместимые с FIPS. Установка этого параметра на 0, как указано, может быть нарушением некоторых политик безопасности и быть перезаписана объектом групповой политики. Этот параметр реестра управляет не только IIS или ASP.NET.

Существует другой способ, характерный для .NET, и он может работать на уровне приложения. Это намного проще оправдать по сравнению с изменением настроек всего сервера.

Применение конкретного метода:

В вашем Web.config или App.config файл, добавьте следующую настройку:

<configuration> <!-- Will already be there --> 
    <runtime> 
    <enforceFIPSPolicy enabled="false"/> 
    </runtime> 
... the rest of your .config 

Если я правильно помню, то это должно быть в начале файла конфигурации ,

Все способ применения .NET:

Установите параметр выше в файле machine.config. Будет один для каждой версии и архитектуры .NET (64 бит/32 бит). Там уже будет элемент, поэтому поместите элемент внутри него.

+0

Самое главное на этом этапе состоит в том, что проблема идентифицирована. Вы попали в гвоздь по голове о безопасности, поэтому я действительно не хочу использовать параметр реестра. Я действительно не хочу использовать элемент enforceFIPSPolicy для web.config, потому что вы все еще выполняете требование безопасности; только на основе каждого приложения. Спасибо за отзыв о размещении в начале конфигурационного файла. Это может быть полезно когда-нибудь в будущем. – DerHaifisch

0

У меня не было такого же сценария, как в этом случае, но у меня были очень похожие результаты. То, что я сделал, чтобы разобраться проблема была, я приложил пароль в кавычках, как в следующем (VB.NET):

cnx.ConnectionString = "User ID=MYID;Password=""MyPass"" ;Data Source=MyTEST"

или использовать Chr (34) следующим образом

cnx.ConnectionString = "User ID=MYID;Password="+chr(34)+"MyPass"+chr(34)+" ;Data Source=MyTEST" 
0

I имел точно такую ​​же проблему. Когда я подключался к базе данных непосредственно из SqlDeveloper, он работал нормально. Но мое приложение (построенное на VB6) не смогло подключиться к Oracle и выдало ошибку «ORA-01017 Недопустимый идентификатор/пароль.
После отключения регистрационной логики для моего идентификатора базы данных она решила проблему.