Mobile Integracion Aplicaciones TGD v2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Integración de aplicaciones mobile

Versión 2.0
Para integrar una aplicación con la plataforma Tu Gobierno Digital se utiliza el protocolo
OAuth2 + PKCE (1) y, específicamente, se utiliza el flujo Código de Autorización (authorization
code flow) para obtener la identidad del usuario de la plataforma que se encuentra lanzando
la aplicación.

Como se aprecia en la figura anterior, la aplicación puede ser registrada en la plataforma Tu


Gobierno Digital mediante la configuración de SPA o Mobile (Cliente Público) y se detalla la
manera de cómo se inicia el proceso de recepción del “CODE” necesario para la obtención
del token y posteriormente la recepción del JSON Persona.

Para el caso debemos tener definida un endpoint URL de Redirección (callback)que es


donde se realizan las devoluciones de la información solicitada en cada proceso.

La aplicación deberá contener un botón de Inicio de Sesión (1) el cual realizará un proceso
interno de cálculos (code_verifier y code_challenge) (2), dicho procedimiento puede ser
Página 2

1. Explicación OAuth 2 + PKCE: https://www.valentinog.com/blog/oauth2/


2. Calcular code_verifier y code_challenge: https://www.valentinog.com/blog/challenge/
realizado mediante librerías la cual dependerá de la tecnología utilizada para el desarrollo,
y realizará el llamado al endpoint authorize de TGD (2) (página 3) y adosar los parámetros
requeridos por el endpoint.

Allí la plataforma solicitará las credenciales correspondientes al usuario, iniciando el


proceso de ingreso correspondiente y autorizará a la aplicación su uso (solo la primera
vez).

Este proceso generará la query string con el CODE correspondiente. El procesamiento de


esa query string en la llamada, que se da en la aplicación mobile externa (callback), deberá
de capturar el CODE enviado y adosar las credenciales y parámetros requeridos por el
endpoint token (4) junto al code_verifier reservado anteriormente (página 3).

El endpoint token brindará una respuesta (json), el mismo deberá de procesarse y adosarse
dicho token para el endpoint persona (5) (página 4).

El endpoint persona brindará una respuesta (json) con los datos de la persona que realizó el
lanzamiento. Los datos devueltos dependerán de la configuración que se solicitó en el
formulario, caso contrario solo contendrán los campos definidos como predeterminados en
la API Persona.

Las credenciales serán enviadas al contacto técnico declarado en el formulario, las mismas
solo podrán ser utilizadas en el entorno de TGD Pruebas (https://tgdpruebas.chaco.gob.ar)

Ejemplos de operación de cada endpoint:

AUTHORIZATION CODE FLOW


Los endpoint que utilizan Authorization Code:

➔ Endpoint Authorize:
[GET] https://core.tgdpruebas.chaco.gob.ar/authorize

Se utiliza para hacer botones “logueate con TGD”, forma de ejemplo:

https://core.tgdpruebas.chaco.gob.ar/authorize?client_id={clienteid}&scope=client&redi
rect_uri={redirect uri (url
encoded)}&response_type=code&state={state}&code_challenge={code_challenge}&code
_challenge_metod=S256

Nota: este endpoint se utiliza para obtener un “code” y así poder utilizar el endpoint token para
poder operar.

➔ Endpoint Token:
[POST] https://core.tgdpruebas.chaco.gob.ar/token

En form params (x-www-form-urlencoded) deben ir los siguientes datos:


Página 3

1. Explicación OAuth 2 + PKCE: https://www.valentinog.com/blog/oauth2/


2. Calcular code_verifier y code_challenge: https://www.valentinog.com/blog/challenge/
● client_id: credencial client id de la aplicación externa.
● grant_type: string “authorization_code”.
● state: valor del campo seteado en state del endpoint authorize.
● scope: string “client”.
● redirect_uri (callback): redirect uri de la aplicación externa (debe ir en formato
url encoded).
● code: code recibido en la redirect uri.
● code_verifier: valor del campo reservado con anterioridad.

Nota: este endpoint se utiliza para obtener un token y así poder utilizar el endpoint persona y
obtener la información del usuario que lo lanzó.

Ejemplo de respuesta:
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSU...",
"refresh_token": "def50200f06095afce2f2345efee..."
}

AUTHORIZATION BEARER (mediante authorization code)


Los endpoint que utilizan Authorization: Bearer [access_token]:

➔ Endpoint Persona:
[GET] https://core.tgdpruebas.chaco.gob.ar/api/v2/persona

En el header de la request debe ir Authorization: Bearer [access_token obtenido por


authorization_code]

Nota: este endpoint se utiliza para la información del usuario que lo lanzó.

Ejemplo de respuesta:
{
"@context": "/api/contexts/PersonaFisica",
"@id": "/api/persona_fisicas/304",
"@type": "PersonaFisica",
"apellidos": "Perez",
"nombres": "Juan",
"fechaNacimiento": "1956-01-01T00:00:00-03:00",
"sexo": "M",
"fallecido": false,
"clasificacion": "N",
"id": 304,
"cuitCuil": "20123456781",
"cuilUpdatedAt": null,
"nivel": 3,
Página 4

1. Explicación OAuth 2 + PKCE: https://www.valentinog.com/blog/oauth2/


2. Calcular code_verifier y code_challenge: https://www.valentinog.com/blog/challenge/
"email": “[email protected]” (solo si el usuario aceptar compartirlo,
por defecto no se comparte)
"updatedAt": "2022-12-19T17:01:23-03:00",
"dni": "12345678",
"nivelStr": "Nivel Identificación Presencial",
"validadoPor": [
{
"aplicacion": {
"id": 20,
"nombre": "Empleado Digital"
},
"fechaHoraValidacion": "2019-12-26T11:43:17-03:00"
},
{
"aplicacion": {
"id": 27,
"nombre": "CONNECT TGD"
},
"fechaHoraValidacion": "2018-09-10T10:37:03-03:00"
}],
"telefono": "3624123456", (solo si el usuario aceptar compartirlo, por
defecto no se comparte)
"atp": { ...
}, (seteado en la configuración del json de aplicación a pedido, por
defecto no se incluye)
"afip": { ...
}, (seteado en la configuración del json de aplicación a pedido, por
defecto no se incluye)
"pon": [ ...
], (seteado en la configuración del json de aplicación a pedido, por
defecto no se incluye)
"anses": { ...
}, (seteado en la configuración del json de aplicación a pedido, por
defecto no se incluye)
"mi-argentina": { ...
}, (seteado en la configuración del json de aplicación a pedido, por
defecto no se incluye)
}

Página 5

1. Explicación OAuth 2 + PKCE: https://www.valentinog.com/blog/oauth2/


2. Calcular code_verifier y code_challenge: https://www.valentinog.com/blog/challenge/

También podría gustarte