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:
|
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 |
---|---|
|
Identificador estático de la credencial. |
|
Usuario de la credencial. |
|
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 |
---|---|
|
El identificador estático de la credencial. |
|
El tipo de token: |
|
El valor del token. |
|
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 |
---|---|
|
El identificador estático de la credencial. |
|
Nombre de usuario de la credencial. |
|
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 |
---|---|
|
El identificador estático de la credencial. |
|
El identificador del cliente de OAuth2. |
|
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 |
---|---|
|
El identificador estático de la credencial. |
|
El tipo de token: |
|
El valor del token. |
|
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;