powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Несколько схем аутентификации в одной
12 сообщений из 12, страница 1 из 1
Несколько схем аутентификации в одной
    #39948928
Памела
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apex 19.2

1. Часть пользователей должны заходить в приложение напрямую (HTTP Header Variable), если по определенному условию они не подходят,то
2. Авторизуются на 101 странице по имени/паролю LDAP

Как это красиво реализовать? В буржуазных статьях не нашла такой реализации
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39948944
Javl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Памела,

Смотря как происходит авторизация на основной странице, от этого плясать, варианты разные.
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39948960
Памела
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логика примерно такая :

p_user constant varchar2(4000) := UPPER(owa_util.get_cgi_env('X_ISRW_PROXY_AUTH_USER'));
тут хранится SSO юзер

if в p_user есть нужная подстрока - нужно автоматически создать под него apex-сессию и пустить в приложение.
Как это сделать с помощью apex_custom_auth?

if в p_user нет нужной подстроки или она просто пустая - перекидываем пользователя на 101 страницу. Пусть вводит имя и пароль. А там будет LDAP аутентификация.
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39948996
Javl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Памела,

Ну если условие True записываете 1 или что-то в переменную
Делаете Brench на страницу с авторизацией LDAP c условием Validating, если переменная is NULL...

то что пришло в голову, может кто-то подскажет другие пути.

У меня просто аутентификация проходит через процедуру, там в теле все прописывается.
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39949001
Памела
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Javl
Памела,

Ну если условие True записываете 1 или что-то в переменную
Делаете Brench на страницу с авторизацией LDAP c условием Validating, если переменная is NULL...


В том, то и дело что надо через процедуру - по первому условию как создастся автоматически создастся валидная сессия апекс?

Если не трудно можно кинуть пример вашей процедуры мне на почту zpamela@rambler.ru
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39949010
Javl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Памела,

У меня процедура аутентификация не стандартная Апексовая, а имена пользователей, пароли и др значения берутся из отдельной таблицы пользователей.
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39949015
Javl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У Вас то как ?
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39949022
Памела
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас все заходят через одну login страницу - там у него запрашивается адшные имя и пароль. Конечно, есть пользовательская таблица.
Сейчас научили вебсервер заполнять username в переменную CGI.
p_user constant varchar2(4000) := UPPER(owa_util.get_cgi_env('X_ISRW_PROXY_AUTH_USER'));
тут хранится SSO юзеh

if в p_user есть нужная подстрока - нужно автоматически создать под него apex-сессию и пустить в приложение.
Как это сделать с помощью apex_custom_auth?

if в p_user нет нужной подстроки или она просто пустая - перекидываем пользователя на 101 страницу. Пусть вводит имя и пароль. А там будет LDAP аутентификация.
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39949043
Javl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Памела,
Вот пример начальной схемы, от него можно дальше добавлять функционал

create or replace Package PKG_AUTH_USER Is

Function Authenticate_User(p_User_Name Varchar2
,p_Password Varchar2) Return Boolean;

-----
Procedure Process_Login(p_User_Name Varchar2
,p_Password Varchar2
,p_App_Id Number);

End PKG_AUTH_USER;
__________________________________________________________________________

create or replace Package Body PKG_AUTH_USER Is

Function Authenticate_User(p_User_Name Varchar2
,p_Password Varchar2) Return Boolean As
v_Password AUTHUSERS.UTABLE.COL2%Type;
v_Active AUTHUSERS.UTABLE.COL10%Type;
v_IP AUTHUSERS.UTABLE.COL3%Type;
Begin
If p_User_Name IS NULL and p_Password IS NULL THEN
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'ВЫ НЕ ВВЕЛИ ИМЯ ПОЛЬЗОВАТЕЛЯ И ПАРОЛЬ');
Return False;
End If;

if p_User_Name Is Null and p_Password IS NOT NULL THEN
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'ВЫ НЕ ВВЕЛИ ИМЯ ПОЛЬЗОВАТЕЛЯ');
Return False;
End If;

if p_User_Name IS NOT NULL and p_Password IS NULL THEN
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'ВВЕДИТЕ ПАРОЛЬ');

Return False;
End If;
----
Begin
Select u.COL2
,u.COL10
,u.COL3
Into v_Password
,v_Active
,v_IP
From AUTHUSERS.UTABLE u
Where u.COL1 = p_User_Name;
Exception
When No_Data_Found Then

-- Write to Session, User not found.
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'ВЫ ВВЕЛИ НЕПРАВИЛЬНОЕ ИМЯ ПОЛЬЗОВАТЕЛЯ');
Return False;
End;
If v_Password <> p_Password Then

-- Write to Session, Password incorrect.
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'ВЫ ВВЕЛИ НЕПРАВИЛЬНЫЙ ПАРОЛЬ');
Return False;
End If;
If v_Active <> 'АКТИВЕН' Then
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'ПОЛЬЗОВАТЕЛЬ ЗАБЛОКИРОВАН, СВЯЖИТЕСЬ С АДМИНИСТРАТОРОМ');
Return False;
End If;
---
-- Write user information to Session.
--
Apex_Util.Set_Session_State('SESSION_USER_NAME'
,p_User_Name);
Apex_Util.Set_Session_State('SESSION_IP'
,v_IP);
---
---
Return True;
END;

Procedure Process_Login(p_User_Name Varchar2
,p_Password Varchar2
,p_App_Id Number) As
v_Result Boolean := False;
Begin
v_Result := Authenticate_User(p_User_Name
,p_Password);
If v_Result = True Then
-- Redirect to Page 1 (Home Page).
Wwv_Flow_Custom_Auth_Std.Post_Login(p_User_Name -- p_User_Name
,p_Password -- p_Password
,v('APP_SESSION') -- p_Session_Id
,p_App_Id || ':1' -- p_Flow_page
);
Else
-- Login Failure, redirect to page 102 (Login Page).
Owa_Util.Redirect_Url('f?p=102:102:102');
End If;
End;

End PKG_AUTH_USER;
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39949197
Nickname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Памела,

if в p_user есть нужная подстрока : выполняйте вызывайте процедуру создания сессии

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
PROCEDURE create_apex_session(
    p_app_id IN apex_applications.application_id%TYPE,
    p_app_user IN apex_workspace_activity_log.apex_user%TYPE,
    p_app_page_id IN apex_application_pages.page_id%TYPE DEFAULT 1,
    p_app_param_name in varchar2 default null,
    p_app_param_value in varchar2 default null
)
AS
    l_workspace_id apex_applications.workspace_id%TYPE;
    l_cgivar_name OWA.vc_arr;
    l_cgivar_val OWA.vc_arr;
    l_session apex_workspace_sessions.apex_session_id%type;
BEGIN


    HTP.init;
    l_cgivar_name(1) := 'REQUEST_PROTOCOL';
    l_cgivar_val(1) := 'HTTP';
    OWA.init_cgi_env(num_params => 1, param_name => l_cgivar_name, param_val => l_cgivar_val);

    apex_session.create_session(p_app_id,p_app_page_id,p_app_user);
    select v('APP_SESSION') into l_session from dual;

    apex_custom_auth.post_login
        (p_uname => p_app_user,
        p_session_id => l_session,
        p_app_page => apex_application.g_flow_id || ':' || p_app_page_id);

    if p_app_param_name is not null then
        APEX_UTIL.SET_SESSION_STATE(p_app_param_name,p_app_param_value);
    end if;

    apex_application.g_user :=upper(p_app_user);

END;
    



у меня так
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39954312
Памела
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickname, да мне попадалась эта процедура

вот еще статья в тему
http://www.grassroots-oracle.com/2019/01/apex-authentication-switch-in-session.html
...
Рейтинг: 0 / 0
Несколько схем аутентификации в одной
    #39966306
orabin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Nickname,

PROCEDURE create_apex_session(
крутая процедура!!

Кто автор? Получается ее можно вызывать из любой apex-страницы?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Несколько схем аутентификации в одной
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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