powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Доменная аутентификация в Oracle 10g
18 сообщений из 18, страница 1 из 1
Доменная аутентификация в Oracle 10g
    #39275676
Profeccor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, имею трудности с непониманием реализации доменной аутентификации пользователей в pl/sql процедуре.
На сегодняшний день я веду таблицу пользователей, и они логинятся через интерфейс, вводя логин и пароль.
Но так же их учетные записи ведутся в LDAP и пользователь вводит логин пароль при входе в компьютер. Мне необходимо, каким то образом получать его логин и связывать с правами доступа в той же таблице с пользователя в pl/sql процедуре.
Я совершенно не имею представления как это реализовать.

p.s.
Oracle Database 10g Enterprise Edition Release 10.1.0.5.0 - 64bi
PL/SQL Release 10.1.0.5.0 - Production
CORE 10.1.0.5.0 Production
TNS for Linux: Version 10.1.0.5.0 - Production
NLSRTL Version 10.1.0.5.0 - Production
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275681
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Profeccor10.1.0.5.0Боже, какая гниль.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275683
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sys_context('userenv','os_user')
в сессии пользователя вернёт компьютерный логин из-под которого инициирована сессия в oracle
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275691
Profeccor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,
немного не понимаю, что значит в сессии пользователя?

выполняю код в процедуре и получаю ответ "oracle" не зависимо от того под чей учеткой вошел на компьютер.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275698
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProfeccorFogel,
немного не понимаю, что значит в сессии пользователя?

выполняю код в процедуре и получаю ответ "oracle" не зависимо от того под чей учеткой вошел на компьютер.

откройте сессию sqlplus или developer, соединившись с oracle
и выполните
select sys_context('userenv','os_user') from dual;
select sys_context('userenv','session_user') from dual;

сравните.

" и получаю ответ "oracle""
значит процедура вызывается без прямого участия пользователя (джобом, например), либо между пользователем и вызовом процедуры есть звено, которое не передаёт переменные сеанса.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275702
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProfeccorНа сегодняшний день я веду таблицу пользователей, и они логинятся через интерфейс, вводя логин и пароль.
То есть у вас некоторое приложение обезличенно дёргает процедуру.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275705
Profeccor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,

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

результат select sys_context('userenv','session_user') from dual; всегда одинаков "adm".

если я выполняю select sys_context('userenv','os_user') from dual; через SQL Developer то получаю свой логин на компьютер, а если вызываю процедуру то "oracle".

Меня не устраивает данное решение. Я могу вытащить логин компьютера через активх, но это некрасиво и только в IE и неправильно.
Как через Oracle получить его?
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275707
Profeccor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create or replace PROCEDURE     TEST_ORACLE
as
begin   

    for i in(
    SELECT SYS_CONTEXT('USERENV', 'MODULE') as appname, SYS_CONTEXT('USERENV', 'TERMINAL') as machinename, sys_context('userenv','os_user') as os_user, sys_context('userenv','session_user') as session_user
from dual)
loop
  htp.print(' appname: '|| i.appname||'<br/>');
  htp.print(' os_user: '|| i.os_user||'<br/>');
  htp.print(' session_user: '|| i.session_user||'<br/>');
  htp.print(' machinename: '||i.machinename);
end loop;
    
end;
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275718
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProfeccorКак через Oracle получить его?
в данном случае без изменений никак.
oracle показывает окружение пользователя так, как вы это окружение передали.
кто даму кормит, тот и танцует.
приложение обращается к oracle - oracle показывает то окружение, с которым приложение к нему пришло.
если вы в приложении не передаёте ники пользователей, то oracle никак их не родит.

в приведённой процедуре нет никаких входных и выходных параметров: она извлекает переменные сеанса вообще безотносительно вызывающего, то есть берёт системного пользователя базы - это "oracle".
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275726
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"в приведённой процедуре нет никаких входных и выходных параметров: она извлекает переменные сеанса вообще безотносительно вызывающего, то есть берёт системного пользователя базы - это "oracle". "

тут я некорректно выразился.

в приведённой процедуре нет никаких входных и выходных параметров: она извлекает переменные сеанса вообще безотносительно вызывающего, то есть берёт системного пользователя базы - это "oracle", из-под которого ваше приложение смотрит в БД.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275731
Profeccor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,

Что я могу изменить чтобы передавать их туда? Я понимаю что данные которые мне нужны отсутсвуют и что все вызовы процедур идут через одного пользователя oracle, но я не знаю что мне изменить и как реализовать обращение по другому?
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275746
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Profeccor...
Что я могу изменить чтобы передавать их туда? Я понимаю что данные которые мне нужны отсутсвуют и что все вызовы процедур идут через одного пользователя oracle, но я не знаю что мне изменить и как реализовать обращение по другому?

Profeccor...

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

результат select sys_context('userenv','session_user') from dual; всегда одинаков "adm".

если я выполняю select sys_context('userenv','os_user') from dual; через SQL Developer то получаю свой логин на компьютер, а если вызываю процедуру то "oracle".

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

Ответ зависит от типа веб сервера и каким framеwork вы пользуетесь.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275748
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProfeccorFogel,

Что я могу изменить чтобы передавать их туда?
это вопрос архитектуры.
какое приложение вы используете для "они логинятся через интерфейс, вводя логин и пароль" так и не стало понятно, кроме того, что это веб-сервер (какой? голый апач, транслирующий http команды как есть или какой-нибудь веблоджик/томкат с задеплоенным java-приложением и т.п.).
надо работать с этим приложением.
например, можно получать на входе в приложении все возможные для http-протокола данные, инициируя со стороны oracle в ответ на попытку авторизации соответствующие запросы с помощью пакета UTL_HTTP.
по http передаётся много параметров, в том числе определённые параметры окружения пользователя.

желаю успехов.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275753
Profeccor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

Я пишу все на pl/sql. веб сервер Apache.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275762
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Profeccor,

Хмм
apache напрямую работать с oracle не умеет
что у него внутри?
mod_plsql/perl/php ?
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275763
Profeccor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

mod_plsql
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275784
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Profeccor,

Стандартный путь:
3.11.1 Connection Pooling with mod_plsql

Дока...
The important details in the example shown in steps 1-10 are:

Each Oracle HTTP Server process serves all types of requests, such as static files requests, servlet requests, and mod_plsql requests. There is no control on which Oracle HTTP Server process services the next request.

One Oracle HTTP Server process cannot use or share the connection pool created by another process.

Each Oracle HTTP Server process pools at most one database connection for each DAD.

User sessions are switched within a pooled database connection for a DAD. For DADs based on Oracle Application Server Single Sign-On (SSO), proxy authentication is used to switch the user session . For non-SSO users, using HTTP basic authentication with the username and password not in the DAD, users are re-authenticated on the same connection.

Multiple DADs may point to the same database instance, but database connections are not shared across DADs even within the same process.

Unused DADs do not result in any database connections.
...


SSO - требует отдельного продукта, типа OAM, Которого Вы сейчас не найдете (Уже не поддерживается). Есть его потомок: OIM, но будет ли он работать в связке с mod_plsql?
Кроме того OIM требует отдельной лицензии.

Штатное использование доменной авторизации через Kerberos - фиг его знает.
Может и можно прикрутить (я например не рискну), но для этого нужно досконально разбираться в технологии, а этого у Вас судя по вопросам нет.

Что то подобное делалось вот тут: 14771211 , но чем кончилось не знаю.

Тем более поддержка kerberos для oracle 10gR1 кривая и опять же требует лицензии.
Для более свежих продуктов, поддержка есть и бесплатная, но опять встаёт вопрос скрещивания
ужа с ежом.

Хотя, вот:
авторOk, the problem can be solved by WNA (windows Native Authentication) together with SSO (single sign on).
Here is the link useful for those who might have the same problem:

Но ссылки уже мертвые. Слишком много утекло воды.

Использовать переменные из JavaScript можно, но решение кривое и не безопасное.
...
Рейтинг: 0 / 0
Доменная аутентификация в Oracle 10g
    #39275795
Profeccor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,
Большое спасибо. буду думать, пробовать.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Доменная аутентификация в Oracle 10g
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]