Oracle - Получить аутентифицированного пользователя - PullRequest
0 голосов
/ 18 февраля 2019

Мое приложение MVC подключается к базе данных Oracle.Мы создали множество триггеров для сохранения всех данных, измененных пользователями.

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

UPPER(SYS_CONTEXT('USERENV', 'OS_USER'))

Когда я запускаю свое приложениев localhost база данных получает правильного пользователя, но когда я разглашаю его на сервере (IIS), база данных всегда получает в качестве пользователя имя пула приложений.

Есть ли какая-то конфигурация IIS, которую мне нужно установить, чтобы получитьПользователь "Windows аутентификации"?Есть ли другой способ получить эту информацию внутри функции / триггера оракула?

1 Ответ

0 голосов
/ 18 февраля 2019

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

Если вы не хотите создавать свой собственный контекст, вы можете использовать CLIENT_IDENTIFIER in USERENV, который вы можете установить через dbms_session всякий раз, когда вы получаете соединение из пула.Функционально это в основном идентично созданию собственного контекста.Хорошая вещь в создании собственного контекста заключается в том, что вы можете легко добавлять атрибуты в будущем по мере необходимости (например, добавление IP-адреса клиентского браузера или атрибута уровня, если у вас есть золотые, серебряные и бронзовые клиенты).).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...