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!