Saltar al contenido principal

Descripción general

InsForge puede funcionar como proveedor de identidad OAuth 2.0, permitiendo que aplicaciones de terceros autentiquen usuarios mediante “Sign in with InsForge”. Esto permite que los desarrolladores que construyen sobre tu plataforma aprovechen el sistema de autenticación de InsForge sin tener que gestionar sus propias credenciales de usuario.

Casos de uso

Plataformas para desarrolladores

Permite que desarrolladores externos creen integraciones con “Sign in with InsForge”, mientras mantienes el control sobre el acceso a los datos de los usuarios.

Agentes de IA y MCP

Autentica agentes de IA y herramientas LLM a través de Model Context Protocol con autorización basada en OAuth.

Aplicaciones de socios

Permite que las aplicaciones de socios autentiquen usuarios contra tu proyecto de InsForge sin compartir credenciales.

CLI y aplicaciones de escritorio

Emite tokens OAuth para herramientas de línea de comandos y aplicaciones de escritorio que necesitan acceso a la API.

Flujo de OAuth 2.0

InsForge implementa el flujo de código de autorización con PKCE (Proof Key for Code Exchange), el flujo OAuth más seguro tanto para aplicaciones web como nativas.

Primeros pasos

1

Registra tu aplicación

Contacta a InsForge para registrar tu aplicación como un cliente OAuth. Recibirás:
  • Client ID: Identificador público de tu aplicación
  • Client Secret: Clave confidencial para el intercambio de tokens del lado del servidor
  • Allowed Redirect URIs: URLs a las que se puede redirigir a los usuarios después de la autorización
2

Configura los scopes

Define los permisos que necesita tu aplicación:
ScopeDescripción
user:readLee la información del perfil del usuario
organizations:readLista las organizaciones del usuario
projects:readLee los metadatos del proyecto
projects:writeCrea y modifica proyectos
3

Implementa el flujo de autorización

Integra el flujo de OAuth en tu aplicación utilizando los endpoints que se indican a continuación.

Endpoints

Endpoint de autorización

Redirige a los usuarios a este endpoint para iniciar el flujo de OAuth.
Parámetros de consulta:
ParámetroObligatorioDescripción
client_idEl client ID de tu aplicación
redirect_uriURL a la que redirigir tras la autorización (debe estar registrada previamente)
response_typeDebe ser code
scopeLista de scopes separados por espacios
stateCadena aleatoria para protección CSRF
code_challengeCode challenge de PKCE (hash SHA256 codificado en base64url)
code_challenge_methodDebe ser S256
Ejemplo:

Endpoint de token

Intercambia el código de autorización por tokens de acceso y de actualización.
Cuerpo de la solicitud (JSON):
Respuesta:

Token de actualización

Intercambia un refresh token por un nuevo token de acceso.
Cuerpo de la solicitud (JSON):

Endpoint de perfil de usuario

Recupera la información del perfil del usuario autenticado.
Respuesta:

Guía de implementación

Genera los parámetros de PKCE

PKCE añade una capa adicional de seguridad al garantizar que la aplicación que inició el flujo sea la misma que lo completa.

Ejemplo completo del lado del servidor

Aquí tienes una implementación completa con Express.js. Primero, crea un archivo .env con tus credenciales:
Genera un secreto de sesión seguro usando: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Luego implementa el flujo de OAuth:

Modo popup para SPAs

En aplicaciones de una sola página, puedes abrir el flujo de OAuth en una ventana emergente:
En tu manejador de callback, envía un mensaje a la ventana principal:

Consideraciones de seguridad

Usa siempre PKCE

PKCE es obligatorio en todos los flujos de OAuth. Evita los ataques de interceptación del código de autorización.

Valida el state

Verifica siempre el parámetro state en los callbacks para prevenir ataques CSRF.

Almacenamiento seguro de tokens

Almacena los tokens de acceso en memoria o en cookies httpOnly seguras. Nunca expongas los tokens en URLs o en localStorage.

Usa HTTPS

Todos los endpoints de OAuth requieren HTTPS en producción. Nunca transmitas tokens por conexiones sin cifrar.

Expiración corta de los tokens

Los tokens de acceso expiran en 1 hora. Usa refresh tokens para obtener nuevos tokens de acceso sin volver a autenticarte.

Minimización de scopes

Solicita solo los scopes que tu aplicación necesita. Los usuarios tienden a aprobar más fácilmente permisos limitados.

Claims del token

Los tokens de acceso son JWTs que contienen los siguientes claims:
ClaimDescripción
subID del usuario (UUID)
emailDirección de correo electrónico del usuario
roleRol del usuario (authenticated)
client_idID de cliente OAuth que solicitó el token
scopeScopes concedidos
iatMarca de tiempo de emisión
expMarca de tiempo de expiración
issEmisor (insforge)
audAudiencia (insforge-api)

Manejo de errores

Errores de autorización

Si la autorización falla, los usuarios son redirigidos a tu redirect_uri con parámetros de error:
Códigos de error comunes:
ErrorDescripción
invalid_requestParámetros faltantes o no válidos
unauthorized_clientEl cliente no está autorizado para este tipo de concesión
access_deniedEl usuario denegó la solicitud de autorización
invalid_scopeEl scope solicitado no es válido o es desconocido

Errores de token

Los errores del endpoint de token se devuelven en formato JSON:
ErrorDescripción
invalid_grantEl código expiró, ya se usó, o el verifier no coincide
invalid_clientFalló la autenticación del cliente
invalid_requestFaltan parámetros requeridos

Límites de tasa

Los endpoints de OAuth tienen límite de tasa para prevenir abusos:
EndpointLímite
/authorize100 solicitudes por minuto por IP
/token50 solicitudes por minuto por cliente
/profile100 solicitudes por minuto por token

Recursos

Repositorio de ejemplo de OAuth

Ejemplo completo y funcional que muestra cómo integrar “Sign in with InsForge” en tu aplicación.