Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

how to create sso in apex oracle with azure

NO NameNov 20 2023

So actually I've already created SSO, but the problem is that when logging in, you have to first check T_USER whether the account exists or not, so the problem is that on the Apex login page, I use the function APEX_AUTHENTICATION.LOGIN and it logs in successfully, but the problem is that it doesn't match the role. respectively, even though I have created Authorization Schemes, it still doesn't check the function

create or replace FUNCTION AUTHENTICATE_USER
(p_username in varchar2,
p_password in varchar2)
return boolean
is
-- l_user_name T_USER.USERNAME%type := upper(p_username);
l_user_name T_USER.EMAIL%type := lower(p_username);
l_password T_USER.PASSWORD%type;
l_hashed_password varchar2(1000);
l_count number;
begin
-- Mengembalikan dari fungsi AUTHENTICATE_USER
-- 0 Otentikasi normal, berhasil
-- 1 Nama Pengguna Tidak Dikenal
-- 2 Akun Terkunci
-- 3 Akun Kadaluarsa
-- 4 Password Salah
-- 5 Penggunaan Password Pertama
-- 6 Batas Maksimum Upaya Login Terlampaui
-- 7 Kesalahan Internal Tidak Dikenal
--
-- Pertama, periksa apakah pengguna ada
select count(*)
into l_count
from T_USER
-- where USERNAME = l_user_name;
where EMAIL = l_user_name;

if l\_count > 0 then  
     -- Hash password yang diberikan  
     l\_hashed\_password := hash\_password(l\_user\_name, p\_password);  

     -- Dapatkan password yang tersimpan  
     select PASSWORD   
       into l\_password   
       from T\_USER   
   --    where USERNAME = l\_user\_name;  
   where EMAIL = l\_user\_name;  

     -- Bandingkan keduanya, dan jika cocok, kembalikan TRUE  
     if l\_hashed\_password = l\_password then  
         -- Hasil baik.   
         return true;  
     else  
         -- Password tidak cocok  
         return false;  
     end if;  

else
-- Nama pengguna tidak ada
return false;
end if;
-- Jika kita sampai di sini, ada yang aneh terjadi.
return false;
exception
when others then
-- Kami tidak tahu apa yang terjadi jadi log kesalahan internal yang tidak dikenal
return false;
end authenticate_user;
/

pl/sql login page

APEX_AUTHENTICATION.LOGIN(
p_username => :P9999_USERNAME,
p_password => :P9999_PASSWORD);

DECLARE
l_id_unit NUMBER;
l_nama_unitkerja VARCHAR2(255);
l_nama VARCHAR2(255);
l_id_role NUMBER;
l_nama_role VARCHAR2(255);
l_email VARCHAR2(255);
l_username VARCHAR2(255);
BEGIN
SELECT ID_UNIT, NAMA_UNITKERJA,NAMA,ID_ROLE, NAMA_ROLE, EMAIL, NAMA
INTO l_id_unit, l_nama_unitkerja,l_nama,l_id_role, l_nama_role, l_email, l_username
FROM T_USER
WHERE USERNAME = :P9999_USERNAME
AND PASSWORD = HASH_PASSWORD(UPPER(:P9999_USERNAME),:P9999_PASSWORD);

-- Simpan ID_UNIT dalam session state
APEX_UTIL.SET_SESSION_STATE('P_ID', l_id_unit);

-- Simpan NAMA_UNITKERJA dalam session state
APEX_UTIL.SET_SESSION_STATE('P_UNITKERJA', l_nama_unitkerja);

-- Simpan NAMA_UNITKERJA dalam session state
APEX_UTIL.SET_SESSION_STATE('P_NAMA', l_nama);

-- Simpan ID_ROLE dan NAMA_ROLE dalam session state
apex_util.set_session_state('P_ID_ROLE', l_id_role);
apex_util.set_session_state('P_NAMA_ROLE', l_nama_role);
apex_util.set_session_state('P_EMAIL', l_email);
apex_util.set_session_state('P_NamaUser', l_username);
END;

Comments
Post Details
Added on Nov 20 2023
4 comments
312 views