Simula segundo factor de autenticación BancoEstado...
Redirección hacia Fintech

Al finalizar la simulación, se presenta un resumen que muestra al cliente los detalles del consentimiento que acaba de autorizar.


Podemos visualizar un listado de consentimientos generados por el flujo open finance y el estado en que se encuentran. Necesitamos el ID de consentimiento para consumir la API sen Park Dev o vía Postman.

En "Credenciales" tiene acceso al Client ID, certificado y llave privada mtls, elementos necesarios para interactuar con las APIs.
En este punto, está todo listo para consultar el documento técnico de integración.
Image RemovedSolicitudes HTTP
Diagrama diagrama de
Secuencia secuencia –
Flujo flujo consentimiento y
Consulta Datos de Cuentaconsulta datos de cuenta
Image AddedDescripción | Documento técnico. Detalla solicitudes HTTP para lograr integración del flujo de consentimiento. |
---|
Prerrequisitos | Registro en portal API Market. Crear aplicación y vincular API cuentas. Generar consentimiento mock. Obtener client Id desde portal API Market. Descargar certificado y llave privada desde portal (utilizar en Postman o en Curls para ejecutar solicitudes HTTP).
|
Documento relacionado | Diagrama de secuencia flujo consentimiento. |
1. POST /token (Fintech Token)
Llamada obtener token para solicitud que crea consentimiento:
Code Block |
---|
curl --location 'https://${KEYCLOAK_HOST_AND_REALM} /protocol/openid-connect/token' \ |
--cert /path/to/certificate.crt \ |
--key /path/to/private-key.key \ |
--header 'Content-Type: application/x-www-form-urlencoded' \ |
--data-urlencode 'grant_type=client_credentials' \ |
--data-urlencode 'client_id= ${FINTECH_CLIENT_ID} ' \ |
--data-urlencode 'scope=openid' |
2. POST /consents (Create Consent)
Llamada para iniciar el proceso de consentimiento, en el cual se debe asociar el rut del cliente, el alcance de los datos dentro del array de scopes (puede ser una, dos o todas las opciones para consulta de datos disponible), y la fecha de expiración del consentimiento:
Code Block |
---|
curl --location 'https://${API_HOST}/consent-management/api/v1/consents' \ |
--cert /path/to/certificate.crt \ |
--key /path/to/private-key.key \ |
--header 'Content-Type: application/json' \ |
--header 'Authorization: Bearer ${FINTECH_TOKEN}' \ |
"ACCOUNTS_BALANCES_READ", |
"ACCOUNTS_TRANSACTIONS_READ" |
"expirationDateTime": "2024-06-15T15:14:10Z", |
"redirectUri": "${REDIRECT_URL_FINTECH} " |
NOTA: Para este curl, redirectUri debe ser la url callback registrada al momento de crear la aplicación en el API Market.
2.1. Response /consents (Create Consent):
La respuesta al crear un consentimiento contiene el campo “authorizationUrl”, que establece la url a la cual se redirige el cliente (aplicación BECH) con los parámetros necesarios para validar el consentimiento mediante clave BEPASS:
"id": "64e533c6f7c877001112d405", |
"interactionId": "64e533c6f7c877001112d406", |
"authorizationUrl": "https://appBancoEstado.cl?consentid=64e533c6f7c877001112d405&interactionid=64e533c6f7c877001112d406" |
2.2. Redirección desde App BECH:
Una vez validado el consentimiento por el cliente con su BEPASS, se retorna el control a la fintech Fintech (redirección desde BECH) indicando mediante parámetros en la url un “ticket” (token para ejecutar consultas de datos) y el “state” (id del consentimiento):
Code Block |
---|
{URL_CALLBACK}/statusView?ticket=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJiNzdmMWJiZS03MzYxLTQyYjktYjE5NS1lNDUzNGIwNTg1MTIifQ.eyJleHAiOjE2OTI3NDMyNjMsIm5iZiI6MCwiaWF0IjoxNjkyNzQyOTYzLCJwZXJtaXNzaW9ucyI6W3sicnNpZCI6IjEzMTBjMDQzLTNjZTctNGQwOC04N2VhLTA1MjFmZjBjZjY4YiJ9XSwianRpIjoiNTQzNTQxZWItMzc2NC00OTJhLWFlNTctNjNiMWFkNTRjYWVjLTE2OTI3NDI5NjM4NzgiLCJhdWQiOiJodHRwczovL2tleWNsb2FrLmJkYy5zaGFyZWQuZnNhcHBzLmlvL2F1dGgvcmVhbG1zL2NvbnNlbnQtbWFuYWdlbWVudC1kZXYiLCJzdWIiOiJlZmFlOTk3NC1jOGQyLTQzNTgtYmU4OS04YjJjNWIxNmY0M2EiLCJhenAiOiJyZXNvdXJjZS1jbGkifQ.oNQY9rbtxC5HeVkGldK4Kpn81ApuUCR0JgAUFBvd0dE&state= ${CONSENT_ID} |
El ticket es equivalente al “Fintech Token”, puede ser utilizado para consultar los datos que el cliente autorizó en el proceso de consentimiento. Dicho token tiene una duración de 5 minutos, y se puede volver a generar ejecutando el curl 3.POST/token. |
2.3.
- Obtener detalles consentimiento:
Una vez ejecutada la redirección desde la aplicación BancoEstado hacia la Fintech, es posible consultar los detalles del consentimiento, y con esto, poder mostrar información al cliente sobre el alcance de los datos que autorizó, el tiempo por el cual estará vigente dicho consentimiento, etc.
Code Block |
---|
curl --location 'https://${API_HOST}/consent-management/api/v1/consents/${CONSENT_ID}/' \ |
--cert /path/to/certificate.crt \ |
--key /path/to/private-key.key \ |
--header 'Authorization: Bearer ${FINTECH_TOKEN |
Response:
"_id": "6515c4b96fa1f70011e2f561", |
"resourceId": "25ad3e63-04e5-441a-8aba-fc4940a69d0f", |
"resourceName": "WInRZVsZJM0Fc2lMwgI9ubqH_PRTmJFMMPX_WbRhZOU", |
"requestorClientId": "openplus_f0dbdbdb-5ab9-405e-8af9-c34758b851f7", |
"requestorSubject": "f6dec843-7843-4935-85f5-273196234c9b", |
"requestorClientName": "openplus_f0dbdbdb-5ab9-405e-8af9-c34758b851f7", |
"ACCOUNTS_BALANCES_READ", |
"ACCOUNTS_TRANSACTIONS_READ" |
"redirectUri": "https://open-plus-frontend.bech.hml.fsapps.io", |
"creationDateTime": "2023-09-28T18:23:53.509Z", |
"statusUpdateDateTime": "2023-10-18T15:40:37.639Z", |
"expirationDateTime": "2024-06-15T15:14:10.000Z", |
3. POST /token (Fintech Token)
Llamada obtener token para solicitud de segundo token:
Code Block |
---|
curl --location 'https://${KEYCLOAK_HOST_AND_REALM}/protocol/openid-connect/token' \ |
--cert /path/to/certificate.crt \ |
--key /path/to/private-key.key \ |
--header 'Content-Type: application/x-www-form-urlencoded' \ |
--data-urlencode 'grant_type=client_credentials' \ |
--data-urlencode 'client_id= ${FINTECH_CLIENT_ID} ' \ |
--data-urlencode 'scope=openid' |
4. POST /token (
Api API Token)
Llamada obtener token para solicitud de datos:
Code Block |
---|
curl --location 'https://${API_HOST}/consent-management/api/v1/oauth/token' \ |
--cert /path/to/certificate.crt \ |
--key /path/to/private-key.key \ |
--header 'Content-Type: application/json' \ |
--header 'Authorization: Bearer ${FINTECH_TOKEN} ' \ |
"grant_type": "refresh_token", |
"consentId": "${CONSENT_ID} " |
5. GET /accounts
Code Block |
---|
curl --location 'https://${API_HOST}/open-banking-chile/accounts/v2/accounts?page=1&page-size=25&accountType=&pagination-key=7a6b0f9b-6770-49aa-8704-e407d6d340e3' \ |
--cert /path/to/certificate.crt \ |
--key /path/to/private-key.key \ |
--header 'x-fapi-auth-date: Sun, 10 Sep 2023 19:43:31 UTC' \ |
--header 'x-fapi-customer-ip-address: 1.1.1.1' \ |
--header 'x-fapi-interaction-id: ${CONSENT_ID} \ |
--header 'x-customer-user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36' \ |
--header 'Authorization: Bearer ${API_TOKEN} ' |
Paso a producción API Market

Ejecutada la solicitud para paso a producción de una aplicación, y aprobada por BancoEstado, los pasos a seguir son los que se detallan a continuación…
Generar
Certificado certificado y
Llavellave

Como primer paso se debe generar un certificado y llave. Podemos utilizar el siguiente comando:
Code Block |
---|
openssl req new newkey rsa:2048 nodes keyout client.key out client.csr |
Esto genera dos archivos dentro de la carpeta en donde es lanzado el comando.
Subir CSR y descargar
Certificado certificado de seguridad
Podemos ver los archivos generados:

