Seleccionar página

APEX_CREDENTIAL

apex_credential

Escrito por: Eddie Molina

Oracle ACE Pro. Oracle APEX Cloud Developer Certified Professional. Presidente de ORAUGCRC (Grupo de Usuarios Oracle de Costa Rica). Miembro de líderes de LAOUC. Conferencista, consultor, desarrollador y capacitador en tecnologías Oracle, especialmente Oracle Application Express con más de 30 años de experiencia.

16/04/2022

Puede usar el paquete APEX_CREDENTIAL para cambiar las credenciales almacenadas de forma persistente o solo para la sesión APEX actual.

Está compuesta por los siguientes procedimientos.

Procedimiento CLEAR_TOKENS

Este procedimiento borra todos los tokens adquiridos para una credencial dada. Se aplica solo a los flujos basados ​​en OAuth2, donde la identificación del cliente y el secreto del cliente se utilizan para obtener un token de acceso con un tiempo de vencimiento determinado. Esta llamada borra los tokens obtenidos.

La sintaxis del procedimiento es:

PROCEDURE CLEAR_TOKENS( p_credential_static_id IN VARCHAR2);

Donde:

Parámetro Descripción
p_credential_static_id El identificador estático de la credencial.

Un ejemplo del uso de este procedimiento es:

BEGIN
     apex_credential.clear_tokens(
          p_credential_static_id => ‘OAuth Login’ );
END;

 

Procedimiento CREATE_CREDENTIAL

Este procedimiento crea una definición de credencial.

La sintaxis del procedimiento es:

PROCEDURE CREATE_CREDENTIAL (
     p_credential_name IN VARCHAR2,
     p_credential_static_id IN VARCHAR2,
     p_authentication_type IN VARCHAR2,
     p_scope IN VARCHAR2 DEFAULT NULL,
     p_allowed_urls IN apex_t_varchar2 DEFAULT NULL,
     p_prompt_on_install IN BOOLEAN DEFAULT FALSE,
     p_credential_comment IN VARCHAR2 DEFAULT NULL );

Donde:

Parámetro Descripción
p_credential_name El nombre de la credencial.
p_credential_static_id El identificador estático de la credencial.
p_authentication_type

El tipo de autenticación. Los tipos soportados son:

  • apex_credential.C_TYPE_BASIC
  • apex_credential.C_TYPE_OAUTH_CLIENT_CRED
  • apex_credential.C_TYPE_JWT
  • apex_credential.C_TYPE_OCI
  • apex_credential.C_TYPE_HTTP_HEADER
  • apex_credential.C_TYPE_HTTP_QUERY_STRING
p_scope Scope de OAuth2 (Optional).
p_allowed_urls Lista de URLs (as APEX_T_VARCHAR2) que esta credencial puede accedes (Optional).
p_prompt_on_install Elija si se deben mostrar solicitudes para esta credencial cuando la aplicación se importa en otra instancia de Oracle APEX (Optional).
p_credential_comment Comentario de la credencial (Optional).

Un ejemplo del uso de este procedimiento es:

BEGIN
     — Primero se define el espacio de trabajo
     apex_util.set_workspace(p_workspace => ‘MY_WORKSPACE’);

     apex_credential.create_credential (
          p_credential_name => ‘OAuth Login’,
          p_credential_static_id => ‘OAUTH_LOGIN’,
          p_authentication_type => apex_credential.C_TYPE_OAUTH_CLIENT_CRED,
          p_scope => ’email’,
          p_allowed_urls => apex_t_varchar2( ‘https://tokenserver.mycompany.com/oauth2/token’, ‘https://www.oracle.com’ ),
          p_prompt_on_install => false,
          p_credential_comment => ‘Credential for OAuth Login’ );

     — debe ser seguido por un set_persistent_credentials
     apex_credential.set_persistent_credentials (
          p_credential_static_id => ‘OAUTH_LOGIN’,
          p_client_id => ‘dnkjq237o8832ndj98098-..’,
          p_client_secret => ‘1278672tjksaGSDA789312..’ );
END;

 

 

Procedimiento DROP_CREDENTIAL

Este procedimiento descarta una definición de credencial.

La sintaxis del procedimiento es:

PROCEDURE DROP_CREDENTIAL (
     p_credential_static_id IN VARCHAR2 );

Donde:

Parámetro Descripción
p_credential_static_id El identificador estático de la credencial.

Un ejemplo del uso de este procedimiento es:

BEGIN
     — primero se define el espacio de trabajo
     apex_util.set_workspace(p_workspace => ‘MY_WORKSPACE’);

     apex_credential.drop_credential (
          p_credential_static_id => ‘OAUTH_LOGIN );
END;

 

 

Procedimiento SET_ALLOWED_URLS

Este procedimiento establece una lista de URL que se pueden usar para esta credencial.

La sintaxis del procedimiento es:

PROCEDURE SET_ALLOWED_URLS(
     p_credential_static_id IN VARCHAR2,
     p_allowed_urls IN apex_t_varchar2,
     p_client_secret IN VARCHAR2 );

Donde:

Parámetro Descripción
p_credential_static_id El identificador estático de la credencial.
p_allowed_urls Lista de URLs (as APEX_T_VARCHAR2) que puede acceder esta credencial.
p_client_secret Secreto del cliente. Si se cambian las URL permitidas, se debe volver a proporcionar.

Si una URL de destino de solicitud HTTP para estas credenciales coincide con una de estas URL, se permite el uso de credenciales. Si no, surge un error.

Las URL se comparan comenzando por. Por ejemplo, si p_allowed_urls se pasa como:

apex_t_varchar2(‘https://www.oracle.com’,’https://apex.oracle.com/ords/’),

… entonces la credencial se puede usar para solicitudes HTTP para:

  • https://www.oracle.com/
  • https://www.oracle.com/myrest/servicio
  • https://apex.oracle.com/ords/secret/workspace

Sin embargo, la credencial no está permitida para solicitudes para:

  • https://web.oracle.com
  • https://apex.oracle.com/apex/workspace
  • http://www.oracle.com/

El secreto del cliente debe proporcionarse nuevamente si cambian las URL permitidas. Si el secreto del cliente se proporciona como NULL, se borrará.

Un ejemplo del uso de este procedimiento es:

BEGIN
     apex_credential.set_allowed_urls (
          p_credential_static_id ‘OAuth Login’,
          p_allowed_urls apex_t_varchar2(
               ‘https://tokenserver.mycompany.com/oauth2/token’,
               ‘https://www.oracle.com’ ),
          p_client_secret ‘1278672tjksaGSDA789312..’ );
END;

 

Procedimiento SET_PERSISTENT_CREDENTIALS Firma 1

Este procedimiento establece la identificación del cliente y el secreto del cliente para una credencial determinada. Normalmente se usa para el flujo de credenciales de cliente de OAuth2. Las nuevas credenciales se almacenan de forma persistente y son válidas para todas las sesiones actuales y futuras. Se eliminarán los tokens de acceso, actualización o ID almacenados para esa credencial.

La sintaxis del procedimiento es:

PROCEDURE SET_PERSISTENT_CREDENTIALS(
     p_credential_static_id IN VARCHAR2,
     p_client_id IN VARCHAR2,
     p_client_secret IN VARCHAR2,
     p_namespace IN VARCHAR2 DEFAULT NULL,
     p_fingerprint IN VARCHAR2 DEFAULT NULL );

Donde:

Parámetro Descripción
p_credential_static_id El identificadotr estático de la credencial.
p_client_id El identificador de Cliente de OAuth2.
p_client_secret El secreto del cliente de OAuth2 (es equivalente a la contraseña).
p_namespace Namespace opcional (para OCI)
p_fingerprint Huella digital opcional (para OCI)

Un ejemplo del uso de este procedimiento es:

BEGIN
     apex_credential.set_persistent_credentials (
          p_credential_static_id => ‘OAuth Login’,
          p_client_id => ‘dnkjq237o8832ndj98098-..’,
          p_client_secret => ‘1278672tjksaGSDA789312..’ );
END;

 

Procedimiento SET_PERSISTENT_CREDENTIALS Firma 2

Este procedimiento establece el nombre de usuario y la contraseña para una credencial dada. Por lo general, lo usa una persona de seguridad después de la importación de la aplicación y permite separar las responsabilidades entre una persona que importa la aplicación y otra persona que almacena las credenciales.

La sintaxis del procedimiento es:

PROCEDURE SET_PERSISTENT_CREDENTIALS(
     p_credential_static_id IN VARCHAR2,
     p_username IN VARCHAR2,
     p_password IN VARCHAR2 );

Donde:

Parámetro Descripción

p_credential_static_id

Identificador estático de la credencial.

p_username

Usuario de la credencial.

p_password

Contraseña de la credencial.

Un ejemplo del uso de este procedimiento es:

begin
     apex_credential.set_persistent_credentials (
          p_credential_static_id => ‘Login’,
          p_username => ‘scott’,
          p_password => ‘tiger );
end;

 

Procedimiento SET_PERSISTENT_TOKEN

Este procedimiento utiliza una transacción autónoma para almacenar el token en la tabla de la base de datos.

SET_PERSISTENT_TOKEN almacena un token en un almacén de credenciales que se obtiene con código PL/SQL manual o personalizado. El almacén de credenciales guarda este token en forma cifrada para su uso posterior por parte de los componentes de Oracle APEX. El token se almacena durante el tiempo de vida de la sesión APEX. Otras sesiones no pueden usar este token. Cuando los tokens se obtienen con un código PL/SQL personalizado, el ID del cliente y el secreto del cliente no se almacenan en ese almacén de credenciales; solo contiene los tokens establecidos por este procedimiento.

La sintaxis del procedimiento es:

PROCEDURE SET_PERSISTENT_TOKEN(
     p_credential_static_id IN VARCHAR2,
     p_token_type IN t_token_type,
     p_token_value IN VARCHAR2,
     p_token_expires IN DATE );

Donde:

Parámetro Descripción

p_credential_static_id

El identificador estático de la credencial.

p_token_type

El tipo de token: APEX_CREDENTIAL.C_TOKEN_ACCESS,  APEX_CREDENTIAL.C_TOKEN_REFRESH o APEX_CREDENTIAL.C_TOKEN_ID.

p_token_value

El valor del token.

p_token_expiry

La fecha de expiración del token.

Un ejemplo del uso de este procedimiento es:

begin
     apex_credential.set_persistent_token (
          p_credential_static_id => ‘OAuth Login’,
          p_token_type => apex_credential.C_TOKEN_ACCESS,
          p_token_value => ‘sdakjjkhw7632178jh12hs876e38..’,
          p_token_expiry => to_date(‘2017-10-31’, ‘YYYY-MM-DD’) );
end;

 

Procedimiento SET_SESSION_CREDENTIALS

Este procedimiento es una sobrecarga genérica para establecer las credenciales de sesión.

La sintaxis del procedimiento es:

PROCEDURE SET_SESSION_CREDENTIALS(
     p_credential_static_id IN VARCHAR2,
     p_key IN VARCHAR2,
     p_value IN VARCHAR2 );

Donde:

Parámetro Descripción
p_credential_static_id El identificador estático de la credencial.
p_key La llave de la credencial key (nombre del parámetro HTTP Header Query String).
p_value Valor secreto de la credencial.

Un ejemplo del uso de este procedimiento es:

begin
     apex_credential.set_session_credentials (
          p_credential_static_id => ‘my_API_key’,
          p_key => ‘api_key’,
          p_value => ‘lsjkgjw4908902ru9fj879q367891hdaw’ );
end;

 

Procedimiento SET_SESSION_CREDENTIAL Firma 1

Este procedimiento establece el nombre de usuario y la contraseña para una credencial dada para la sesión actual. Normalmente se utiliza para la autenticación BÁSICA cuando el usuario final debe proporcionar las credenciales que se utilizarán.

La sintaxis del procedimiento es:

PROCEDURE SET_SESSION_CREDENTIALS(
     p_credential_static_id IN VARCHAR2,
     p_username IN VARCHAR2,
     p_password IN VARCHAR2 );

Donde:

Paráametro Descripción

p_credential_static_id

El identificador estático de la credencial.

p_username

Nombre de usuario de la credencial.

p_password

Contarseña de la credencial.

Un ejemplo del uso de este procedimiento es:

begin
     apex_credential.set_session_credentials (
          p_credential_static_id => ‘Login’,
          p_username => ‘scott’,
          p_password => ‘tiger );
end;

 

Procedimiento SET_SESSION_CREDENTIALS Firma 2

Este procedimiento establece la identificación del cliente y el secreto del cliente para una credencial dada para la sesión actual. Normalmente se usa para el flujo de credenciales de cliente de OAuth2.

La sintaxis del procedimiento es:

PROCEDURE SET_SESSION_CREDENTIALS(
     p_credential_static_id IN VARCHAR2,
     p_client_id IN VARCHAR2,
     p_client_secret IN VARCHAR2,
     p_namespace IN VARCHAR2 DEFAULT NULL,
     p_fingerprint IN VARCHAR2 DEFAULT NULL);

Donde:

Parameters Description

p_credential_static_id

El identificador estático de la credencial.

p_client_id

El identificador del cliente de OAuth2.

p_client_secret

El secreto del cliente de OAuth2.

p_namespace Namespace opcional (usado por OCI)
p_fingerprint Huella digital opcional (usado por OCI)

Un ejemplo del uso de este procedimiento es:

begin
     apex_credential.set_session_credentials (
          p_credential_static_id => ‘OAuth Login’,
          p_client_id => ‘dnkjq237o8832ndj98098-..’,
          p_client_secret => ‘1278672tjksaGSDA789312..’ );
end;

 

Procedimiento SET_SESSION_TOKEN

Este procedimiento utiliza una transacción autónoma para almacenar el token en la tabla de la base de datos.

Almacena un token en un almacén de credenciales que se obtiene con código PL/SQL manual o personalizado. El almacén de credenciales guarda este token en forma cifrada para su uso posterior por parte de los componentes de APEX. El token se almacena durante el tiempo de vida de la sesión APEX. Otras sesiones no pueden usar este token. Cuando los tokens se obtienen con un código PL/SQL personalizado, el ID del cliente y el secreto del cliente no se almacenan en ese almacén de credenciales; solo contiene los tokens establecidos por este procedimiento.

La sintaxis del procedimiento es:

PROCEDURE SET_SESSION_TOKEN(
     p_credential_static_id IN VARCHAR2,
     p_token_type IN t_token_type,
     p_token_value IN VARCHAR2,
     p_token_expires IN DATE );

Donde:

Parámetro Descripción

p_credential_static_id

El identificador estático de la credencial.

p_token_type

El tipo de token: APEX_CREDENTIAL.C_TOKEN_ACCESS,  APEX_CREDENTIAL.C_TOKEN_REFRESH o APEX_CREDENTIAL.C_TOKEN_ID.

p_token_value

El valor del token.

p_token_expires

La fecha de expiración del token

Un ejemplo del uso de este procedimiento es:

begin
     apex_credential.set_session_token (
          p_credential_static_id => ‘OAuth Login’,
          p_token_type => apex_credential.C_TOKEN_ACCESS,
          p_token_value => ‘sdakjjkhw7632178jh12hs876e38..’,
          p_token_expires => to_date(‘2017-10-31’, ‘YYYY-MM-DD’) );
end;

 

También te puede gustar…

Share This