Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Несколько схем аутентификации в одной / 12 сообщений из 12, страница 1 из 1
20.04.2020, 13:49
    #39948928
Памела
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько схем аутентификации в одной
Apex 19.2

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

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

Смотря как происходит авторизация на основной странице, от этого плясать, варианты разные.
...
Рейтинг: 0 / 0
20.04.2020, 14:39
    #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
20.04.2020, 16:00
    #39948996
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько схем аутентификации в одной
Памела,

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

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

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

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


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

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

У меня процедура аутентификация не стандартная Апексовая, а имена пользователей, пароли и др значения берутся из отдельной таблицы пользователей.
...
Рейтинг: 0 / 0
20.04.2020, 16:41
    #39949015
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько схем аутентификации в одной
У Вас то как ?
...
Рейтинг: 0 / 0
20.04.2020, 16:55
    #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
20.04.2020, 17:19
    #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
21.04.2020, 08:43
    #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
05.05.2020, 13:38
    #39954312
Памела
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько схем аутентификации в одной
Nickname, да мне попадалась эта процедура

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

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

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


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