OAuth 2.0

OAuth 2.0 es el estándar de autorización utilizado por las APIs del Grupo INS. Define cómo una aplicación puede obtener acceso controlado a recursos protegidos sin necesidad de compartir credenciales directamente. ¿Qué es un Grant? Un grant es el método mediante el cual una aplicación obtiene autorización para acceder a recursos. OAuth 2.0 define distintos grants según el escenario de uso. El Grupo INS utiliza client_credentials.

Machine-to-Machine icon

Machine-to-Machine

Diseñado para comunicación servidor a servidor. No requiere autenticación ni consentimiento de usuarios finales.

Client Credentials icon

Client Credentials

La aplicación se autentica con su propio client_id y client_secret para obtener untoken de acceso. Estas credenciales las otorga el Grupo INS.

Seguridad icon

Sin exposición de credenciales

Las credenciales nunca se comparten. Solo se intercambia un token temporal con expiración definida.

Info icon

¿Por qué Client Credentials? Este flujo es ideal para integraciones entre sistemas. La aplicación cliente actúa en nombre propio, no en nombre de un usuario, lo que elimina la necesidad de formularios de login o pantallas de consentimiento.

Flujo de autenticación

Proceso completo desde la obtención de credenciales hasta el consumo de APIs protegidas, incluyendo la renovación del token al expirar.

1

Solicitud de token al endpoint OAuth

Dispone de client_id y client_secret asignados por el Grupo INS.

POST /connect/v1/token — grant_type=client_credentials.

2

Generación del token de acceso

Se devuelve un JWT firmado con expires_in y scope.

3

Consumo de API protegida

Authorization: Bearer {token} + subscription-key en cada request.

4

Respuesta del API

Estructura JSON

Diagrama de flujo de autenticación OAuth

Solucitud de token

Para obtener un token de acceso envía una solicitud POST con las credenciales en el cuerpo de la petición.

Parámetros de la solicitud

Método POST Content-Type application/x-www-form-urlencoded

Body (form-urlencoded)

grant_type client_credentials Tipo de flujo OAuth 2.0 client_id {client_id} Identificador asignado por el Grupo INS client_secret {client_secret} Secreto — nunca exponer en frontend
HTTP
POST /connect/v1/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}

Endpoints y ambientes

El Grupo INS dispone de dos ambientes: Integración para el desarrollo y validación de las implementaciones, y Producción para la operación del servicio en un entorno productivo.

Integración

POST

Ambiente para desarrollo, pruebas e integración. Las credenciales de pruebas no deben usarse en producción.

https://apiintegracion.grupoins.com/connect/v1/token

Producción

POST

Ambiente productivo. Usar únicamente con credenciales de producción tras validación completa de la integración.

https://apiproduccion.grupoins.com/connect/v1/token

Ejemplo cURL

Ejemplo completo para solicitar un token de acceso desde línea de comandos. Reemplaza your_client_id y your_client_secret con las credenciales asignadas por el Grupo INS.

BASH
curl --request POST \
  --url 'https://apiintegracion.grupoins.com/connect/v1/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials \
  --data 'client_id=your_client_id' \
  --data 'client_secret=your_client_secret'

Explicación línea por línea

--request POST

Método HTTP requerido para la solicitud de token.

--url

Endpoint del servidor OAuth. Cambia el dominio para producción.

--header content-type

El body debe enviarse como formulario URL-encoded, no como JSON.

--data grant_type

Indica el flujo OAuth a utilizar: client_credentials para M2M.

--data client_id

Identificador único de tu aplicación, asignado por el Grupo INS.

--data client_secret

Secreto de la aplicación. Nunca incluirlo en código del lado cliente. Asignado por el Grupo INS.

Ejemplo POSTMAN

También puede configurar la herramienta Postman para obtener tokens de acceso, siguiendo los siguientes pasos:

  1. Seleccionar la pestaña "Authorization".
  2. En la lista desplegable "Auth Type", seleccionar "OAuth 2.0".
  3. En el campo "Token Name" ingresar un nombre para identificar el token.
  4. En la lista desplegable "Grant type" seleccionar "Client Credentials".
  5. En el campo "Access Token URL" ingresar el URL para la obtención de tokens. Este varía según el ambiente.
  6. En el campo "Client ID" ingresar su client_id.
  7. En el campo "Client Secret" ingresar su client_secret.
  8. En la lista "Client Authentication" seleccionar "Send as Basic Auth header".
  9. Mediante el botón "Get New Access Token" se solicita el token de acceso. Esto despliega el siguiente diálogo.
  10. Utilizar el botón "Use token" para cargar el token obtenido en la solicitud actual.

Si requiere conocer como obtener un token de acceso desde el código fuente, en este enlace encontrará ejemplos en los lenguajes de programación más comunes.

Respuesta del servidor OAuth

Al completar correctamente la solicitud el servidor responde con un objeto JSON que contiene el token de acceso y metadatos de sesión.

JSON
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expires_in": 3600,
  "token_type": "Bearer",
  "scope": "IniciarSesion"
}
access_token

Token JWT que debe incluirse en el header Authorization de cada llamada a la API.

expires_in

Segundos hasta la expiración del token (ej. 3600 = 1 hora). Este valor siempre debe leerse dinámicamente desde este atributo — nunca debe estar fijo en un archivo de configuración.

token_type

Siempre es "Bearer" para las APIs del Grupo INS. Este prefijo es obligatorio al usar el token.

scope

Scopes otorgados al token. Define los recursos a los que tiene acceso.

Estructura del JWT (access_token)

Header

Algoritmo de firma RS256 y tipo de token JWT.

Payload

Claims: sub, scope, exp, iat y datos de la aplicación.

Signature

Firma RSA. Garantiza la integridad del token.

Uso del token de acceso

El token de acceso retornado por el servidor de autorización, debe enviarse en un encabezado HTTP para todos los llamados que se realicen a los APIs del Grupo INS. Este encabezado se denomina Authorization y tiene el siguiente formato:

Authorization: Bearer {token de acceso}

Donde {token de acceso} corresponde al valor del atributo access_token, retornado por el servidor de autorización. Ejemplo:

HTTP Header
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRt...

Clave de suscripción

Además del token de acceso, cada solicitud a las APIs del Grupo INS requiere un header adicional con la clave de suscripción. Ambos son obligatorios y deben enviarse simultáneamente. La clave de suscripción es entregada por el Grupo INS junto con el client_id y client_secret.

OAuth Access Token icon

Token de acceso

Authorization: Bearer

Token JWT temporal generado mediante el flujo Client Credentials. Tiene expiración (expires_in) y debe renovarse periódicamente.

Propósito: autenticación de la aplicación

Requerido
Subscription Key icon

Clave de suscripción

subscription-key

Clave estática asignada por el Grupo INS que identifica la suscripción a las APIs. No expira de forma automática.

Propósito: control de acceso y throttling

Requerido
HTTP
GET https://apiintegracion.grupoins.com/polizas/v1/recibos/consulta?numeroPoliza=ABCXYZ
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
subscription-key: f4027603-e270-4a2b-b633-5a6a1dad7785

Protección de credenciales

Recomendaciones oficiales para proteger las credenciales y tokens de tu integración.

Nunca almacenar credenciales en el frontend

Crítico

Un navegador de internet se considera un lugar inseguro por defecto y no debe utilizarse para almacenar client_id, client_secret ni tokens de acceso.

Nunca exponer secretos en el código cliente

Crítico

Los archivos JavaScript del frontend, las apps móviles y los repositorios públicos no son lugares seguros para almacenar secretos.

Gestionar credenciales únicamente en el backend

Crítico

Todas las solicitudes de token deben realizarse desde el servidor. El frontend nunca debe comunicarse directamente con el endpoint OAuth.

SPAs sin backend: usar el patrón BFF

Importante

Las aplicaciones de una sola página (SPA) que no tienen servidor deben implementar el patrón Backend For Frontend (BFF) para gestionar las credenciales de forma segura.

Limitar acceso a credenciales

Importante

Solo los componentes del sistema que realmente necesitan las credenciales deben tener acceso a ellas. Aplicar principio de mínimo privilegio.

Gestionar secretos con herramientas adecuadas

Importante

Usa gestores de secretos (Azure Key Vault, AWS Secrets Manager, HashiCorp Vault) o variables de entorno seguras. Nunca en archivos de configuración versionados.

Conceptos clave

Glosario de términos utilizados en la autenticación y autorización de las APIs del Grupo INS.

OAuth 2.0

Estándar de autorización que permite a una aplicación obtener acceso limitado a recursos sin compartir credenciales directamente.

Client Credentials

Flujo OAuth 2.0 para comunicación M2M (Machine-to-Machine). La aplicación se autentica con su propio client_id y client_secret.

JWT

JSON Web Token. Formato de token compacto y autónomo para transmitir información entre partes de forma segura y verificable.

Token de acceso

Token temporal emitido por el servidor OAuth que autoriza el acceso a recursos protegidos. Tiene un tiempo de vida definido por expires_in.

Scope

Define el nivel de acceso otorgado al token. Limita las operaciones que puede realizar la aplicación.

Clave de suscripción

Clave de suscripción asignada por el Grupo INS que se envía junto al Bearer token en cada solicitud para identificar la suscripción API.

Ambiente de Pruebas

Entorno de integración usando el dominio apiintegracion.grupoins.com. Para desarrollo y validación, nunca para tráfico real.

Ambiente de Producción

Entorno productivo usando el dominio apiproduccion.grupoins.com. Solo para integraciones validadas y aprobadas.

Buenas prácticas para desarrolladores

Recomendaciones para una integración eficiente, robusta y segura con las APIs del Grupo INS.

Reutilizar tokens hasta su expiración

No solicites un token nuevo en cada llamada a la API. Almacena el token en memoria del servidor y reutilízalo hasta que expires_in indique que venció.

Evitar solicitar token por cada request

Solicitar un token por cada llamada impacta el rendimiento y puede generar throttling. Implementa un caché del token con renovación automática.

Manejar correctamente HTTP 401 y 403

Un 401 indica token invalido, expirado, la clave de subscription no tiene permisos — solicita uno nuevo. Un 403 indica falta de permisos — revisa los scopes y la subscription-key.

Monitorear la expiración del token

Implementa un mecanismo que renueve el token antes de que expire (ej. con un margen de 60 segundos antes del vencimiento).

Proteger secretos y clave de suscripción

Trata la subscription-key con el mismo nivel de seguridad que el client_secret. Ambas son credenciales sensibles y deben estar en el backend.