Puede utilizar el paquete APEX_CUSTOM_AUTH para realizar varias operaciones relacionadas con la autenticación y la gestión de sesiones.
En la entrega anterior, nos ocupamos de las funciones que forman parte de este paquete y en la presente, toca el turno a los procedimientos.
Procedimiento DEFINE_USER_SESSION
Este procedimiento combina los procedimientos SET_USER y SET_SESSION_ID para crear una llamada.
La sintaxis del procedimiento es:
APEX_CUSTOM_AUTH.DEFINE_USER_SESSION(
p_user IN VARCHAR2,
p_session_id IN NUMBER);
Donde:
Parámetro | Descripción |
---|---|
|
Nombre de acceso del usuario. |
|
El identificador de la sesión. |
Un ejemplo del uso de este procedimiento es:
APEX_CUSTOM_AUTH.DEFINE_USER_SESSION (
:APP_USER,
APEX_CUSTOM_AUTH.GET_NEXT_SESSION_ID);
Procedimiento GET_COOKIE_PROPS
Este procedimiento obtiene las propiedades de la cookie de sesión utilizada en el esquema de autenticación actual para la aplicación especificada. Estas propiedades se pueden ver directamente en App Builder viendo los atributos de cookies del esquema de autenticación.
La sintaxis del procedimiento es:
APEX_CUSTOM_AUTH.GET_COOKIE_PROPS(
p_app_id IN NUMBER,
p_cookie_name OUT VARCHAR2,
p_cookie_path OUT VARCHAR2,
p_cookie_domain OUT VARCHAR2
p_secure OUT BOOLEAN);
Donde:
Parámetro | Descripción |
---|---|
|
Un identificador de aplicación en el espacio de trabajo actual. |
|
El nombre de la cookie. |
|
La ruta de acceso de la cookie. |
|
El dominio de la cookie. |
|
Bandera para establecer la propiedad de seguridad de la cookie. |
Un ejemplo del uso de este procedimiento es:
DECLARE
l_cookie_name varchar2(256);
l_cookie_path varchar2(256);
l_cookie_domain varchar2(256);
l_secure boolean;
BEGIN
APEX_CUSTOM_AUTH.GET_COOKIE_PROPS(
p_app_id => 2918,
p_cookie_name => l_cookie_name,
p_cookie_path => l_cookie_path,
p_cookie_domain => l_cookie_domain,
p_secure => l_secure);
END;
Procedimiento GET_LDAP_PROPS
Este procedimiento obtiene los atributos LDAP del esquema de autenticación actual para la aplicación actual. Estas propiedades se pueden ver directamente en App Builder viendo los atributos del esquema de autenticación.
La sintaxis del procedimiento es:
APEX_CUSTOM_AUTH.GET_LDAP_PROPS(
p_ldap_host OUT VARCHAR2,
p_ldap_port OUT INTEGER,
p_use_ssl OUT VARCHAR2,
p_use_exact_dn OUT VARCHAR2,
p_search_filter OUT VARCHAR2,
p_ldap_dn OUT VARCHAR2,
p_ldap_edit_function OUT VARCHAR2);
Donde:
Parámetro | Descripción |
---|---|
|
Nombre del host LDAP. |
|
Número de puerto LDAP. |
|
Indicador de si se utiliza SSL. |
|
Indica si se utilizan nombres distinguidos exactos. |
|
El filtro de búsqueda utilizado si no se usa DN exacto. |
|
Cadena DN del LDAP. |
|
Nombre de la función de edición del LDAP. |
Un ejemplo del uso de este procedimiento es:
DECLARE
l_ldap_host VARCHAR2(256);
l_ldap_port INTEGER;
l_use_ssl VARCHAR2(1);
l_use_exact_dn VARCHAR2(1);
l_search_filter VARCHAR2(256);
l_ldap_dn VARCHAR2(256);
l_ldap_edit_function VARCHAR2(256);
BEGIN
APEX_CUSTOM_AUTH.GET_LDAP_PROPS (
p_ldap_host => l_ldap_host,
p_ldap_port => l_ldap_port,
p_use_ssl => l_use_ssl,
p_use_exact_dn => l_use_exact_dn,
p_search_filter => l_search_filter,
p_ldap_dn => l_ldap_dn,
p_ldap_edit_function => l_ldap_edit_function);
END;
Procedimiento LOGIN
También conocido como “API de inicio de sesión”, este procedimiento realiza la autenticación y el registro de la sesión.
La sintaxis del procedimiento es:
APEX_CUSTOM_AUTH.LOGIN(
p_uname IN VARCHAR2 DEFAULT NULL,
p_password IN VARCHAR2 DEFAULT NULL,
p_session_id IN VARCHAR2 DEFAULT NULL,
p_app_page IN VARCHAR2 DEFAULT NULL,
p_entry_point IN VARCHAR2 DEFAULT NULL,
p_preserve_case IN BOOLEAN DEFAULT FALSE);
Donde:
Parámetro | Descripción |
---|---|
|
Nombre de acceso del usuario. |
|
Contraseña del usuario en texto claro. |
|
Identificador de sesión actual de APEX. |
|
Identificador de la aplicación actual. seguido de la página luego del acceso, separados por el símbolo dos puntos (:). |
|
Para uso interno. |
|
Si se establece como TRUE, no convierte a mayúsculas |
Un ejemplo del uso de este procedimiento es:
BEGIN
APEX_CUSTOM_AUTH.LOGIN (
p_uname => ‘FRANK’,
p_password => ‘secret99’,
p_session_id => V(‘APP_SESSION’),
p_app_page => :APP_ID||’:1′);
END;
Procedimiento LOGOUT [Obsoleto]
Este procedimiento provoca un cierre de sesión de la sesión actual al desactivar la cookie de sesión y redirigir a una nueva ubicación.
Este procedimiento está obsoleto, utilice APEX_AUTHENTICATION.LOGOUT en su lugar.
Procedimiento POST_LOGIN
Este procedimiento realiza el registro de la sesión, suponiendo que se haya completado el paso de autenticación. Solo se puede llamar desde el contexto de una página de aplicación de Oracle APEX.
La sintaxis del procedimiento es:
APEX_CUSTOM_AUTH.POST_LOGIN(
p_uname IN VARCHAR2 DEFAULT NULL,
p_session_id IN VARCHAR2 DEFAULT NULL,
p_app_page IN VARCHAR2 DEFAULT NULL,
p_preserve_case IN BOOLEAN DEFAULT FALSE);
Donde:
Parámetro | Descripción |
---|---|
|
Nombre de acceso del usuario. |
|
Identificador de la sesión actual de APEX. |
|
Identificador de la aplicación actual y la página posterior al acceso separados por el símbolo dos puntos (:). |
|
Si se establece comoTRUE, no incluye |
Un ejemplo del uso de este procedimiento es:
BEGIN
APEX_CUSTOM_AUTH.POST_LOGIN (
p_uname => ‘FRANK’,
p_session_id => V(‘APP_SESSION’),
p_app_page => :APP_ID||’:1′);
END;
Procedimiento SET_SESSION_ID
Este procedimiento establece la variable global APEX_APPLICATION.G_INSTANCE. Este procedimiento requiere el parámetro P_SESSION_ID (NUMBER) que especifica una ID de sesión.
La sintaxis del procedimiento es:
APEX_CUSTOM_AUTH.SET_SESSION_ID(
p_session_id IN NUMBER);
Donde:
Parámetro | Descripción |
---|---|
|
El identificador de sesión a ser registrado. |
Un ejemplo del uso de este procedimiento es:
APEX_CUSTOM_AUTH.SET_SESSION_ID(APEX_CUSTOM_AUTH.GET_SESSION_ID_FROM_COOKIE);
Procedimiento SET_SESSION_ID_TO_NEXT_VALUE
Este procedimiento combina la operación de GET_NEXT_SESSION_ID y SET_SESSION_ID en una llamada.
La sintaxis del procedimiento es:
APEX_CUSTOM_AUTH.SET_SESSION_ID_TO_NEXT_VALUE;
Un ejemplo del uso de este procedimiento es:
IF NOT APEX_CUSTOM_AUTH.SESSION_ID_EXISTS THEN
APEX_CUSTOM_AUTH.SET_SESSION_ID_TO_NEXT_VALUE;
END IF;
Procedimiento SET_USER_ID
Este procedimiento establece la variable global APEX_APPLICATION.G_USER. SET_USER requiere el parámetro P_USER (VARCHAR2) que define una ID de usuario.
La sintaxis del procedimiento es:
APEX_CUSTOM_AUTH.SET_USER(
p_user IN VARCHAR2);
Donde:
Parámetro | Descripción |
---|---|
|
El identificador de usuario a ser registrado. |
Un ejemplo del uso de este procedimiento es:
IF V(‘APP_USER’) = ‘NOBODY’ THEN
APEX_CUSTOM_AUTH.SET_USER(‘JOHN.DOE’);
END IF;