Ir al contenido
ES EN

Autenticación M2M

La API pública de Gerion usa autenticación máquina a máquina (M2M) para la CLI y pipelines de CI/CD. El flujo es: API Key de larga duración → JWT de corta duración.

CLI / CI/CD
├─ 1. X-API-Key header ──► POST /api/v1/auth/m2m/authenticate
│ │
│◄─ 2. JWT (30 min) ─────────────────────┘
├─ 3. Authorization: Bearer <jwt> ──► POST /api/v1/findings
│ │
│◄─ 4. 201 Created ──────────────────────────────┘
POST https://api.gerion.dev/api/v1/auth/m2m/authenticate

| Header | Valor | |--------|-------| | X-API-Key | Tu API Key (obtenida desde el dashboard) | | Content-Type | application/json |

{
"client_id": "mi-runner-jenkins"
}

| Campo | Tipo | Descripción | |-------|------|-------------| | client_id | string | Identificador del cliente. 3–50 caracteres alfanuméricos, ., -, _. Debe coincidir con el client_id registrado en la API Key. |

{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"expires_in": 1800,
"client_id": "mi-runner-jenkins",
"api_key_id": "key-abc123"
}

| Campo | Descripción | |-------|-------------| | access_token | JWT firmado con RS256. Incluir en Authorization: Bearer para llamadas posteriores. | | expires_in | Validez en segundos (1800 = 30 minutos). |

| Código | Causa | |--------|-------| | 401 | API Key inválida, revocada o client_id no coincide. | | 404 | API Key no encontrada. | | 429 | Rate limit superado (30 req/s, burst 10). |

Una vez obtenido el token, inclúyelo en todas las llamadas posteriores:

Ventana de terminal
# 1. Autenticar y obtener JWT
TOKEN=$(curl -s -X POST https://api.gerion.dev/api/v1/auth/m2m/authenticate \
-H "X-API-Key: $GERION_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id": "mi-runner"}' \
| jq -r '.access_token')
# 2. Usar el JWT para subir findings
curl -X POST https://api.gerion.dev/api/v1/findings \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d @findings.json

Si necesitas validar tokens externamente (por ejemplo, desde otro servicio que verifique JWTs de Gerion):

GET https://api.gerion.dev/api/v1/auth/jwks

Devuelve el conjunto de claves públicas en formato JWKS estándar (RFC 7517). No requiere autenticación.

{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "gerion-api-gateway-key-1",
"n": "...",
"e": "AQAB"
}
]
}