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

p_user

Nombre de acceso del usuario.

p_session_id

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

p_app_id

Un identificador de aplicación en el espacio de trabajo actual.

p_cookie_name

El nombre de la cookie.

p_cookie_path

La ruta de acceso de la cookie.

p_cookie_domain

El dominio de la cookie.

p_secure

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

p_ldap_host

Nombre del host LDAP.

p_ldap_port

Número de puerto LDAP.

p_use_ssl

Indicador de si se utiliza SSL.

p_use_exact_dn

Indica si se utilizan nombres distinguidos exactos.

p_search_filter

El filtro de búsqueda utilizado si no se usa DN exacto.

p_ldap_dn

Cadena DN del LDAP.

p_ldap_edit_function

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

p_uname

Nombre de acceso del usuario.

p_password

Contraseña del usuario en texto claro.

p_session_id

Identificador de sesión actual de APEX.

p_app_page

Identificador de la aplicación actual. seguido de la página luego del acceso, separados por el símbolo dos puntos (:).

p_entry_point

Para uso interno.

p_preserve_case

Si se establece como TRUE, no convierte a mayúsculas p_uname durante el registro de la sesión.

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

p_uname

Nombre de acceso del usuario.

p_session_id

Identificador de la sesión actual de APEX.

p_app_page

Identificador de la aplicación actual y la página posterior al acceso separados por el símbolo dos puntos (:).

p_preserve_case

Si se establece comoTRUE, no incluye p_uname en maypusculas durante el registro de la sesión.

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

p_session_id

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

p_user

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;

 

Share This