Кажется, нет ответа в Интернете о том, как вы можете использовать Oracle Data Provider для .NET (ODP.NET) для подключения к Oracle (12G и позже) в очень конкретной ситуации:Как вы подключаетесь из ODP.NET к Oracle (12G +) с помощью прокси-пользователя без пароля?
- Пользователь идентифицируется внешне на базе
- пользователь получает доступ к другой схеме (пользователя приложение) по доверенности подключения
Пользователь был настроен следующим образом:
CREATE USER user_in_question
IDENTIFIED EXTERNALLY
-- etc.
И подключаете по доверенности был создан как это:
ALTER USER specified_app_user GRANT CONNECT THROUGH user_in_question
Логический подход при создании строки ODP.NET OracleConnection будет что-то вроде этого (используя дружественный пользователю OracleConnectionStringBuilder):
var connBuilder = new OracleConnectionStringBuilder
{
UserID = "/", // External login using the user running the program
ProxyUserId = "specified_app_user",
DataSource = "database",
};
Это не работает. Также не предоставляет пустой «Пароль» или пустой «Пароль прокси». Также не удаляется UserId.
Итак, как вы подключаетесь с использованием ODP.NET в этих обстоятельствах?
Обратите внимание, что указанный пользователь приложения не имеет скобок, если строка соединения указана с использованием идентификатора пользователя прокси =/ – StefanDK
. Это также допустимый формат: var connBuilder = новый OracleConnectionStringBuilder {UserID = "указанный_app_user", DataSource = "database", ProxyUserId = "/"} Тогда скобки не нужны, потому что идентификатор пользователя прокси указывается как/(текущий пользователь) – StefanDK
Кажется, что хотя «User Id = указанный_app_user; Источник данных = база данных; Идентификатор пользователя прокси = /« ДОЛЖЕН работать, он делает не всегда. Правильный рабочий путь состоит в том, чтобы включить [] в целевую схему: ИДЕНТИФИКАТОР ПОЛЬЗОВАТЕЛЯ = [defined_app_user]; DATA SOURCE = database – StefanDK