Idioma: English | Español
Este es el catálogo canónico de códigos de error del dominio de autorización usado por el servidor UMS, los tres SDKs, y todos los sistemas cliente que integran vía el SDK.
El catálogo se origina en src/libs/sdk/contracts/error-codes.yaml. Los paquetes SDK generan constantes desde este archivo en build time, por lo que el código consumidor referencia constantes como UmsErrorCodes.InvalidCredentials en lugar de strings mágicos.
| Código | HTTP | Significado | Emitido por |
|---|---|---|---|
AUTH_001 |
400 | Error de validación — campos requeridos faltantes o malformados | Servidor, SDKs |
AUTH_002 |
404 | Tenant no encontrado | Servidor |
AUTH_003 |
403 | Tenant no activo | Servidor |
AUTH_004 |
401 | Usuario IDP sin UserAccount UMS correspondiente | Servidor |
AUTH_005 |
403 | Estado de UserAccount no es ACTIVE | Servidor |
AUTH_006 |
401 | Credenciales inválidas (BCrypt Local) | Servidor |
AUTH_007 |
423 | Cuenta bloqueada (max login attempts excedido) | Servidor |
AUTH_008 |
401 | Challenge MFA requerido pero no provisto | Servidor |
AUTH_009 |
401 | Challenge MFA falló | Servidor |
AUTH_010 |
401 | Sesión expirada | Servidor |
| Código | HTTP | Significado |
|---|---|---|
AUTH_011 |
503 | Modo IDP configurado pero sin proveedor IDP activo |
AUTH_012 |
501 | Sin adaptador IDP registrado para la estrategia del proveedor |
AUTH_013 |
502 | Llamada de autenticación IDP falló (error de red / proveedor) |
AUTH_014 |
401 | Validación de token IDP falló (firma, expiración, issuer) |
| Código | Significado | Disparador |
|---|---|---|
AUTH_101 |
Scope no concedido | RequiresScope("X.Y") y scope ausente de scopes[] |
AUTH_102 |
Scope explícitamente denegado | Scope presente en denies resueltos |
AUTH_103 |
Opción de menú no concedida | RequiresMenuOption("CODE") resuelve a NotGranted |
AUTH_104 |
Opción de menú denegada | Resuelve a Deny |
AUTH_105 |
Acceso de dominio no concedido | RequiresDomainAccess resuelve a NotGranted |
AUTH_106 |
Acceso de dominio denegado | Resuelve a Deny |
AUTH_107 |
Feature flag deshabilitado | RequiresFeatureFlag y isEnabled = false |
AUTH_108 |
Feature flag no encontrado | Código de flag no presente en featureFlags[] |
AUTH_109 |
Mismatch de tenant | Tenant esperado del request difiere del tenant del grafo |
| Código | Significado |
|---|---|
AUTH_201 |
AUTH_GRAPH_EXPIRED — validUntil está en el pasado |
AUTH_202 |
AUTH_GRAPH_MISSING — no hay grafo disponible en el accessor |
AUTH_203 |
AUTH_GRAPH_MALFORMED — grafo falló validación de JSON Schema |
AUTH_204 |
AUTH_GRAPH_SCHEMA_MISSING — campo schemaVersion ausente |
AUTH_205 |
AUTH_GRAPH_SCHEMA_UNSUPPORTED — versión MAJOR fuera del rango de compatibilidad del SDK |
Todos los errores de autorización emitidos por SDK llevan esta forma (tipada en cada runtime, semántica equivalente):
Los errores emitidos por el servidor (AUTH_001–AUTH_099) siguen el Contrato de Errores Accionables (ADR-0066).
- Códigos nuevos se agregan mediante un bump MINOR del contrato del SDK.
- Los códigos nunca se reutilizan — un código retirado permanece en el catálogo marcado
deprecated: true. - Los códigos son strings estables — aparecen en logs, dashboards y auditorías de seguridad. Renombrar un código es un bump MAJOR.
{ "code": "AUTH_101", "message": "Scope 'PURCHASE_ORDER.APPROVE' no concedido", "primitive": "RequiresScope", "target": "PURCHASE_ORDER.APPROVE", "graphRequestId": "uuid", // correlaciona con el audit trail UMS "validUntil": "ISO-8601", // ayuda a los clientes a decidir re-auth "occurredAt": "ISO-8601" }