Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
S
sigic_documentacion
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Aranza Judith Aguirre Dolores
  • sigic_documentacion
  • Wiki
  • Manejo de Indentidad, Acceso, Autenticación y Autorización

Manejo de Indentidad, Acceso, Autenticación y Autorización

Last edited by Aranza Judith Aguirre Dolores May 17, 2025
Page history

En el contexto del desarrollo de sistemas modernos, la gestión de identidades y accesos (IAM - Identity and Access Management) se ha convertido en un componente esencial para garantizar la seguridad, escalabilidad y gobernanza de las aplicaciones. En este proyecto, se ha optado por implementar Keycloak como solución centralizada de manejo de identidad, autenticación y autorización; solución basada en estándares abiertos ampliamente aceptados como OAuth 2.0, OpenID Connect (OIDC) y SAML 2.0.


Contexto general

2.1. Multiplicidad de usuarios y servicios

En escenarios donde múltiples aplicaciones comparten un mismo ecosistema, mantener autenticación separada en cada sistema conlleva riesgos como:

  • Duplicación de usuarios y contraseñas
  • Procesos inconsistentes de inicio de sesión
  • Baja trazabilidad de accesos

2.2. Requisitos de seguridad avanzados

  • Necesidad de autenticación multifactor (MFA)
  • Protección contra ataques de repetición o token hijacking
  • Auditoría y cumplimiento normativo

2.3. Escalabilidad y extensibilidad

  • Integración con distintos tipos de clientes: SPA, apps móviles, backend APIs
  • Delegación de autenticación a servicios externos (Google, LDAP, etc.)
  • Administración centralizada de políticas de acceso

3. Alternativas consideradas

Opción Descripción breve Limitaciones clave
Autenticación propia Código personalizado con base de datos local Difícil de escalar, poca trazabilidad, inseguro
Firebase Auth Servicio administrado Cerrado, dependiente del ecosistema Google
Auth0 SaaS de IAM comercial Costoso a gran escala, limitaciones en planes
Keycloak Open-source, extensible, estándares abiertos Requiere hosting y administración propios

Se concluye que Keycloak proporciona un equilibrio adecuado entre flexibilidad, cumplimiento, extensibilidad y costo.


4. Estándares y protocolos que soporta Keycloak

Keycloak está alineado con los principales estándares de seguridad:

Protocolo / Norma Descripción técnica
OAuth 2.0 (RFC 6749) Delegación de acceso sin compartir credenciales
OpenID Connect (OIDC) Capa de identidad sobre OAuth2, permite autenticación federada
JWT (RFC 7519) Tokens firmados y auto-contenidos para validación descentralizada
PKCE (RFC 7636) Protección contra ataques de interceptación en apps móviles
TLS 1.2+ Canal seguro requerido en todas las comunicaciones
NIST 800-63B Cumple requisitos para autenticación digital robusta

5. Beneficios de usar Keycloak

5.1. Seguridad

  • Tokens firmados con JWT y RSA o ECDSA
  • Control granular de sesiones, políticas de expiración y revocación
  • Auditoría de eventos (inicio/cierre de sesión, intentos fallidos, cambios de datos)

5.2. Flexibilidad e interoperabilidad

  • Soporta múltiples métodos de autenticación: username/password, OTP, WebAuthn, federación externa
  • Compatible con cualquier cliente que entienda OAuth2/OIDC
  • Delegación de identidad a LDAP, Active Directory, redes sociales (Google, Facebook, etc.)

5.3. Administración centralizada

  • Panel administrativo completo basado en web
  • Configuración de usuarios, roles, grupos y clientes en un solo lugar
  • Separación por realms para ambientes multi-tenant o proyectos separados

5.4. Open Source y Comunidad

  • Licencia Apache 2.0
  • Comunidad activa y respaldo de Red Hat
  • Extensible mediante SPI (Service Provider Interfaces)

6. Casos de uso que habilita en el proyecto

Caso de Uso Implementación con Keycloak
Login único entre aplicaciones (SSO) Mediante cookies y redirecciones OIDC
Autenticación en apps móviles Usando flujo Authorization Code + PKCE
Acceso a APIs REST seguras Verificación de Access Token JWT en backend
Asignación de roles por proyecto Roles y grupos definidos por realm y cliente
MFA en apps críticas Configuración de segundo factor por usuario
Auditoría y trazabilidad Consola administrativa + exportación de logs

7. Costos y mantenimiento

  • Costo de licencia: $0 (open source)
  • Requisitos de infraestructura: contenedor Docker, mínimo 1GB RAM, almacenamiento persistente
  • Mantenimiento requerido:
    • Actualizaciones de seguridad periódicas
    • Configuración inicial y backup de configuración
    • Supervisión de logs

8. Conclusión

La implementación de Keycloak como sistema de autenticación centralizado responde a una necesidad real de estandarizar, asegurar y escalar la gestión de identidades del sistema. Su soporte para estándares abiertos garantiza interoperabilidad y cumplimiento normativo, mientras que su naturaleza open-source permite adaptaciones específicas sin costos adicionales de licenciamiento.

Al adoptar esta herramienta, el proyecto se posiciona con una arquitectura sólida, segura y moderna, preparada para integrar múltiples tipos de aplicaciones y clientes, minimizando riesgos de seguridad y facilitando la administración a largo plazo.




Documentación Técnica: Servicio de Autenticación y Autorización con Keycloak

1. Objetivo

Diseñar e implementar un sistema de autenticación centralizado y seguro, alineado con los estándares de la industria, para controlar el acceso a los sistemas y recursos digitales de la organización.

Este servicio debe:

  • Permitir la autenticación de usuarios humanos y sistemas automatizados.
  • Garantizar la confidencialidad, integridad y disponibilidad de las credenciales y tokens.
  • Escalar horizontalmente según la demanda.
  • Ser extensible para soportar diferentes esquemas de identidad.

2. Estándares y Protocolos Adoptados

2.1 OAuth 2.0 (RFC 6749)

OAuth 2.0 se utiliza como marco de autorización para delegar acceso de forma segura entre usuarios, aplicaciones y servicios. Se admiten los siguientes "grant types":

  • authorization_code (con PKCE): recomendado para aplicaciones públicas como SPA o móviles.
  • client_credentials: para comunicación entre servicios backend.
  • refresh_token: para renovación de tokens sin reautenticación.
  • implicit (limitado y solo si es estrictamente necesario, ya que se considera obsoleto).
  • resource_owner_password_credentials: uso restringido a sistemas legacy bajo revisión de seguridad.

2.2 OpenID Connect (OIDC)

Protocolo de autenticación federada basado en OAuth 2.0, que añade:

  • Provisión de un ID Token con información del usuario autenticado.
  • Punto de descubrimiento (.well-known/openid-configuration).
  • Endpoints estandarizados: token, userinfo, introspection, logout.

2.3 JSON Web Tokens (JWT - RFC 7519)

Tokens firmados digitalmente que contienen las credenciales de acceso:

  • Claims obligatorios: iss, sub, aud, exp, iat.
  • Firmas: RS256 por defecto, con clave pública disponible en endpoint JWKS.
  • Los JWT permiten validación local sin necesidad de llamadas adicionales.

2.4 HTTPS Obligatorio

Todo el tráfico entre los clientes y el servidor de autenticación debe realizarse exclusivamente mediante HTTPS (TLS 1.2 o superior). Cualquier intento de conexión insegura debe ser rechazado.


3. Gestión de Identidades y Acceso

3.1 Usuarios

  • Soporte para cuentas internas propias y externas federadas (por ejemplo desde ORCID, LlaveMX, kardex.digital, etc).
  • Atributos mínimos requeridos: email, nombre, apellido, username, roles.
  • Autenticación multifactor opcional (OTP vía app tercera, WebAuthn).

3.2 Roles y Permisos

  • Definición de roles por aplicación.
  • Asociación de roles a usuarios o grupos.
  • Políticas de autorización basadas en:
    • Roles (RBAC)
    • Atributos (ABAC)
    • Grupos

3.3 Grupos

  • Organización jerárquica de usuarios por función, departamento o contexto.
  • Permite herencia de roles o restricciones.

4. Tokens y Sesiones

4.1 Tipos de Tokens

Tipo Uso Tiempo de vida (recomendado)
Access Token Acceso a recursos protegidos 5-15 minutos
Refresh Token Renovación del Access Token 30 minutos - 1 hora
ID Token Información de la sesión y del usuario Igual que Access Token

4.2 Seguridad de los Tokens

  • Firmados con claves privadas del servidor de autenticación (RS256).
  • Validación mediante JWKS (/.well-known/jwks.json).
  • Uso de aud y iss para garantizar el destino y el emisor legítimo.
  • Tokens no deben almacenarse en almacenamiento no seguro (ej. localStorage sin protección).

4.3 Revocación e Introspección

  • Endpoint de introspección disponible para validar tokens en tiempo real.
  • Endpoint de revocación para forzar el cierre de sesiones o invalidación de refresh tokens.

5. Seguridad y Buenas Prácticas

  • Política de contraseñas configurables: longitud mínima, caracteres especiales, rotación.
  • Protección contra ataques de fuerza bruta mediante bloqueo temporal.
  • HSTS activado en todos los endpoints.
  • Verificación de origen (CORS), cabeceras de seguridad (X-Frame-Options, Content-Security-Policy, etc.).
  • MFA obligatorio para cuentas privilegiadas.

6. Auditoría y Monitoreo

  • Registro de eventos:
    • Inicio/cierre de sesión.
    • Cambios de credenciales.
    • Fallos de autenticación.
    • Creación y eliminación de usuarios.
  • Integración con sistemas SIEM y herramientas de monitoreo (Prometheus, Grafana, ELK).
  • Logs disponibles en formatos estructurados (JSON, syslog).

7. Integración

7.1 Aplicaciones Web

  • Uso de OpenID Connect authorization_code flow con PKCE.
  • Redirección a endpoint /authorize del servidor de autenticación.
  • Recepción y validación del token de forma segura.

7.2 Aplicaciones Móviles

  • Igual que aplicaciones web (con PKCE).
  • Se recomienda usar bibliotecas oficiales de OIDC como AppAuth.

7.3 APIs

  • Protección mediante bearer tokens (JWT).
  • Middleware/verificadores que validen firma, audiencia y expiración del token.
  • Acceso a roles del usuario vía claims del token.

8. Cumplimiento de Estándares

El sistema de autenticación cumple con los siguientes estándares y recomendaciones:

  • [RFC 6749] OAuth 2.0 Authorization Framework
  • [RFC 7636] Proof Key for Code Exchange (PKCE)
  • [RFC 7519] JSON Web Token (JWT)
  • [RFC 7591/7592] Dynamic Client Registration (opcional)
  • [NIST SP 800-63B] Digital Identity Guidelines (nivel 2-3)
  • OWASP Authentication Cheat Sheet
  • CIS Controls - Control 6: Access Control Management

9. Implementación con Keycloak

Todo lo anterior se implementa utilizando Keycloak, una plataforma de gestión de identidades y accesos (IAM) de código abierto que cumple con los estándares mencionados.

Funcionalidades de Keycloak:

  • Servidor OAuth 2.0 / OpenID Connect / SAML 2.0.
  • Administración de usuarios, roles, grupos, sesiones y MFA.
  • Panel de administración web y REST API para automatización.
  • Soporte de federación de identidades con LDAP, Active Directory y redes sociales.
  • Clúster horizontal para alta disponibilidad.
  • Exportación/importación de configuración en JSON.
  • Extensible mediante SPIs y políticas personalizadas.

10. Conclusiones

Este documento describe una solución de autenticación moderna, basada en estándares, segura y flexible. La implementación mediante Keycloak garantiza el cumplimiento de todos los requisitos funcionales, técnicos y de seguridad, y permite escalar el sistema en el tiempo conforme aumentan las necesidades de acceso y federación de identidades de la organización.

Clone repository
  • Entorno
  • Guía básica de codificación
  • Manejo de Identidad, Acceso, Autenticación y Autorización
  • Manejo de Indentidad, Acceso, Autenticación y Autorización
  • Seguridad
  • Home
  • Entorno
    • Guía de Preparación del Sistema Base para Servicios Docker en Ubuntu Server 24.04
  • Guía-básica-de-codificación
    • Buenas prácticas de codificación
    • Comentarios en el código
    • Estilo de codificación
    • Estructura del código fuente
    • Guías de estilo oficiales
    • Nombre
  • Seguridad
    • Manejo de Identidad, Acceso, Autenticación y Autorización
    • Servicio de Autenticación y Autorización con Keycloak
More Pages

New Wiki Page

Tip: You can specify the full path for the new file. We will automatically create any missing directories.