API Autenticación y Autorización
La autenticación verifica la identidad de un cliente, mientras que la autorización decide qué acciones puede realizar después.
Descripción compacta
La autenticación y autorización en APIs son dos mecanismos de seguridad fundamentales. La autenticación verifica quién accede a la API mediante API keys, tokens OAuth2 o certificados. La autorización determina qué recursos y acciones puede usar un usuario autenticado, normalmente basándose en roles, permisos o atributos. Una buena arquitectura de seguridad separa claramente ambos conceptos, implementa autenticación robusta y valida los permisos en cada endpoint. El hecho de que un cliente esté autenticado no significa que pueda ver o modificar todos los datos. La implementación correcta de autenticación y autorización protege contra robo de datos, acceso no autorizado y manipulación.
Componentes principales
Autenticación
La autenticación es el proceso que verifica la identidad de un usuario o cliente. Responde a la pregunta: ¿quién eres? Los métodos comunes incluyen contraseñas, API keys, tokens OAuth2, certificados de cliente y factores biométricos. En APIs, la autenticación se suele realizar a través de encabezados o tokens.
Autorización
La autorización es el proceso que decide qué está permitido después de una autenticación exitosa. Responde a la pregunta: ¿qué puedes hacer? La autorización se basa en roles, derechos, propiedad de recursos o atributos. Un usuario puede estar autenticado pero tener solo acceso de lectura a ciertos datos.
API Keys
Las API keys son cadenas secretas simples que el cliente envía en cada solicitud. Son fáciles de implementar pero menos seguras que los procedimientos basados en tokens. Las API keys funcionan bien para interfaces internas o públicas con riesgo bajo, pero deben transmitirse sobre TLS y renovarse regularmente.
OAuth2
OAuth2 es un marco de autorización que permite a los clientes acceder a recursos en nombre de un usuario sin revelar la contraseña. Define varios flujos como Authorization Code, Client Credentials, Implicit y Device Code. OAuth2 se utiliza en APIs web y móviles modernas.
OpenID Connect
OpenID Connect es una capa de autenticación basada en OAuth2. Permite verificar la identidad de un usuario y proporciona un ID Token con información como nombre y correo electrónico. OpenID Connect se usa para Single Sign-On y autenticación basada en usuarios.
JSON Web Tokens
Los JSON Web Tokens, abreviados como JWT, son tokens compactos y autosuficientes que contienen claims. Constan de encabezado, payload y firma. Los JWT se utilizan frecuentemente para autenticación y autorización en APIs, pero deben firmarse y validarse correctamente.
RBAC
RBAC significa Role-Based Access Control. Los permisos se asignan a roles y los usuarios reciben uno o varios roles. Un administrador puede hacer de todo, un editor solo puede modificar contenido y un visualizador solo puede leer. RBAC es fácil de entender y muy usado.
ABAC
ABAC significa Attribute-Based Access Control. Los permisos se derivan de atributos del usuario, el recurso y el entorno. Por ejemplo, un usuario puede editar un archivo solo si es el propietario y es un día laborable entre las 9 y las 17 horas. ABAC es más flexible que RBAC pero también más complejo.
Autenticación multifactor
La autenticación multifactor requiere múltiples pruebas independientes de identidad, como contraseña y código de un solo uso. En APIs, MFA se implementa a menudo a través de pasos de verificación adicionales o tokens hardware, especialmente para operaciones sensibles.
Principio de mínimo privilegio
El principio de mínimo privilegio establece que los usuarios y clientes deben recibir solo los permisos mínimos necesarios para su tarea. Menos permisos reducen el riesgo de fugas de datos y acciones no autorizadas. Los permisos deben revisarse y ajustarse regularmente.
Ejemplo práctico
Un sistema de gestión de documentos ofrece diferentes endpoints para diferentes roles. La autenticación se realiza mediante un Bearer Token en el encabezado Authorization.
GET /api/v1/documents
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
El servidor valida el token y determina el rol del usuario:
- Un Viewer recibe solo acceso de lectura.
- Un Editor puede crear y modificar documentos.
- Un Administrator puede eliminar documentos y gestionar usuarios.
Ejemplo de un endpoint con RBAC:
DELETE /api/v1/documents/123
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Un Editor recibe 403 Forbidden porque no tiene permiso para eliminar. Un Administrator recibe 204 No Content. La autenticación y autorización se validan por separado: primero el token, luego el permiso.
FAQ: API Autenticación y Autorización
1. ¿Cuál es la diferencia entre autenticación y autorización?
2. ¿Qué es una API Key?
3. ¿Qué es OAuth2?
4. ¿Qué es OpenID Connect?
5. ¿Qué es un JWT?
6. ¿Qué es RBAC?
7. ¿Qué es ABAC?
8. ¿Qué significa mínimo privilegio?
9. ¿Se deben usar API Keys en APIs públicas?
10. ¿Qué es un Bearer Token?
11. ¿Qué es autenticación multifactor?
12. ¿Cuál es la diferencia entre OAuth2 Scopes y RBAC?
13. ¿Por qué la autorización no debe ocurrir solo en el cliente?
14. ¿Qué es Token-Refresh?
15. ¿Cuáles son errores típicos en seguridad de API?
Continuamos en la ruta de aprendizaje de APIs
El siguiente artículo en la ruta de aprendizaje de APIs cubre REST API Seguridad: Autenticación, Autorización y Medidas de Protección — protección integral de REST APIs con OAuth, JWT, RBAC, CORS y Rate Limiting.
Referencias
- https://datatracker.ietf.org/doc/html/rfc6749
- https://openid.net/connect/
- https://datatracker.ietf.org/doc/html/rfc7519
Libros recomendados sobre seguridad de APIs
Si quieres profundizar en autenticación de APIs, autorización y seguridad de APIs, te recomendamos los siguientes libros:
Keine Bücher für Kategorie "security" gefunden.



