Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Доменная аутентификация в Oracle 10g / 18 сообщений из 18, страница 1 из 1
18.07.2016, 14:50:36
    #39275676
Profeccor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
Добрый день, имею трудности с непониманием реализации доменной аутентификации пользователей в 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
18.07.2016, 14:55:25
    #39275681
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
Profeccor10.1.0.5.0Боже, какая гниль.
...
Рейтинг: 0 / 0
18.07.2016, 14:58:45
    #39275683
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
sys_context('userenv','os_user')
в сессии пользователя вернёт компьютерный логин из-под которого инициирована сессия в oracle
...
Рейтинг: 0 / 0
18.07.2016, 15:06:49
    #39275691
Profeccor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
Fogel,
немного не понимаю, что значит в сессии пользователя?

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

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

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

сравните.

" и получаю ответ "oracle""
значит процедура вызывается без прямого участия пользователя (джобом, например), либо между пользователем и вызовом процедуры есть звено, которое не передаёт переменные сеанса.
...
Рейтинг: 0 / 0
18.07.2016, 15:21:48
    #39275702
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
ProfeccorНа сегодняшний день я веду таблицу пользователей, и они логинятся через интерфейс, вводя логин и пароль.
То есть у вас некоторое приложение обезличенно дёргает процедуру.
...
Рейтинг: 0 / 0
18.07.2016, 15:26:11
    #39275705
Profeccor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
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
18.07.2016, 15:28:16
    #39275707
Profeccor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
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
18.07.2016, 15:38:36
    #39275718
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
ProfeccorКак через Oracle получить его?
в данном случае без изменений никак.
oracle показывает окружение пользователя так, как вы это окружение передали.
кто даму кормит, тот и танцует.
приложение обращается к oracle - oracle показывает то окружение, с которым приложение к нему пришло.
если вы в приложении не передаёте ники пользователей, то oracle никак их не родит.

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

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

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

Что я могу изменить чтобы передавать их туда? Я понимаю что данные которые мне нужны отсутсвуют и что все вызовы процедур идут через одного пользователя oracle, но я не знаю что мне изменить и как реализовать обращение по другому?
...
Рейтинг: 0 / 0
18.07.2016, 16:14:47
    #39275746
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
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
18.07.2016, 16:16:47
    #39275748
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
ProfeccorFogel,

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

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

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

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

mod_plsql
...
Рейтинг: 0 / 0
18.07.2016, 17:05:03
    #39275784
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
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
18.07.2016, 17:22:19
    #39275795
Profeccor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доменная аутентификация в Oracle 10g
Vadim Lejnin,
Большое спасибо. буду думать, пробовать.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Доменная аутентификация в Oracle 10g / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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