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 get name from LDAP

Hello,

My apex applications use LDAP authentication . And the top right corner of application displays the user id. But instead i would like to display it with user name. Can anyone please help me how to get username from LDAP. Below is my LDAP function i use in custom authentication.

create or replace FUNCTION LDAP_AUTH(
   P_USERNAME IN VARCHAR2,
   P_PASSWORD IN VARCHAR2
)
RETURN BOOLEAN IS
   L_LDAP_HOST_1     VARCHAR2(256) := 'xx.org';
   L_LDAP_HOST_2     VARCHAR2(256) := 'xx.org';
   L_LDAP_PORT       VARCHAR2(256) := '389';
   L_LDAP_BASE_1     VARCHAR2(256) := 'dc=xx,dc=xx,dc=org';
   L_DN_PREFIX_1     VARCHAR2(100) := 'xx\'; -- Amend as desired'.
   L_LDAP_BASE_2       VARCHAR2(256) := 'dc=cs,dc=xx,dc=xx,dc=org';
   L_DN_PREFIX_2     VARCHAR2(100) := 'xx\'; -- Amend as desired'.
   L_RETVAL        PLS_INTEGER;
   L_SESSION       DBMS_LDAP.SESSION;
BEGIN
   IF P_USERNAME IS NULL OR P_PASSWORD IS NULL THEN
       RAISE_APPLICATION_ERROR(-20000, 'Credentials must be specified.');
   END IF;
   DBMS_LDAP.USE_EXCEPTION := TRUE;
   BEGIN
       L_SESSION := DBMS_LDAP.INIT(HOSTNAME => L_LDAP_HOST_1, PORTNUM  => L_LDAP_PORT);
       L_RETVAL := DBMS_LDAP.SIMPLE_BIND_S(LD     => L_SESSION,
                                           DN     => L_DN_PREFIX_1 || P_USERNAME,
                                           PASSWD => P_PASSWORD);
       L_RETVAL := DBMS_LDAP.UNBIND_S(L_SESSION); 
   RETURN TRUE;
   EXCEPTION
   WHEN OTHERS THEN
       L_RETVAL := DBMS_LDAP.UNBIND_S(L_SESSION); 
       NULL; 
   END;
   BEGIN
       L_SESSION := DBMS_LDAP.INIT(HOSTNAME => L_LDAP_HOST_2, PORTNUM => L_LDAP_PORT);
       L_RETVAL := DBMS_LDAP.SIMPLE_BIND_S(LD     => L_SESSION,
                                           DN     => L_DN_PREFIX_2 || P_USERNAME,
                                           PASSWD => P_PASSWORD);
       L_RETVAL := DBMS_LDAP.UNBIND_S(L_SESSION); 
   RETURN TRUE;
   EXCEPTION
   WHEN OTHERS THEN
       L_RETVAL := DBMS_LDAP.UNBIND_S(LD => L_SESSION);
       APEX_UTIL.SET_CUSTOM_AUTH_STATUS(P_STATUS => 'Incorrect username and/or password');
   RETURN FALSE;
   END;
   APEX_UTIL.SET_CUSTOM_AUTH_STATUS(P_STATUS => 'Incorrect username and/or password');
   RETURN FALSE;
EXCEPTION
   WHEN OTHERS THEN
       L_RETVAL := DBMS_LDAP.UNBIND_S(LD => L_SESSION);
       APEX_UTIL.SET_CUSTOM_AUTH_STATUS(P_STATUS => 'Incorrect username and/or password');
   RETURN FALSE;   
END;

Thanks!

Comments
Post Details
Added on Jun 6 2024
3 comments
232 views