authentik: Proveedor de identidad open source para SSO moderno
Plataforma de autenticación y autorización que soporta SAML, OAuth2/OIDC, LDAP, RADIUS y más, diseñada para autoalojamiento desde laboratorios pequeños hasta clústeres de producción grandes.
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar authentik: Proveedor de identidad open source para SSO moderno en el canal GENBYTE:
¿Qué es authentik: Proveedor de identidad open source para SSO moderno?
authentik es un proveedor de identidad (IdP) de código abierto que actúa como pegamento de autenticación para Single Sign-On (SSO) moderno. El proyecto permite centralizar la gestión de identidades y accesos, sustituyendo soluciones propietarias como Okta, Auth0, Entra ID o Ping Identity. Está construido con Python y Django, y ofrece una interfaz de administración web, API REST y capacidades de extensión mediante blueprints, políticas y flujos personalizados. La versión actual en desarrollo es 2026.11.0-rc1, compatible con Python 3.14 y Node.js 24.
Características principales
Proveedor SAML 2.0
Funciona como Identity Provider (IdP) y Service Provider (SP) SAML, permitiendo integración con aplicaciones empresariales y federación de identidades.
OAuth2 y OpenID Connect
Implementa servidor y cliente OAuth2/OIDC con soporte para flujos Authorization Code, Device Code, Client Credentials y PKCE.
Autenticación multifactor (MFA)
Incluye etapas para TOTP, WebAuthn/FIDO2, Duo, email, SMS y contraseñas estáticas, combinables en flujos de autenticación personalizados.
Fuentes de usuarios flexibles
Conecta con LDAP/Active Directory, OAuth externo (Google, GitHub, Microsoft, etc.), SAML, SCIM, Kerberos, Plex, Telegram y fuentes personalizadas.
Proxy de autenticación (Outposts)
Despliega outposts en modo proxy o forward-auth para proteger aplicaciones legacy sin soporte nativo de SSO, con terminación TLS y reescritura de cabeceras.
Políticas y flujos programables
Motor de políticas basado en expresiones (Python/Go) para decisiones de acceso contextuales: geolocalización, reputación, expiración, dispositivo, hora, etc.
Provisioning SCIM 2.0
Soporte para System for Cross-domain Identity Management como proveedor y consumidor, facilitando sincronización de usuarios y grupos.
Interfaz de administración y API
Panel web responsivo (tema claro/oscuro) y API REST documentada con OpenAPI/Swagger para gestión programática de tenants, aplicaciones, certificados y más.
Multi-tenancy
Aislamiento lógico de tenants con configuración independiente de proveedores, flujos, políticas y branding por tenant.
Observabilidad integrada
Instrumentación OpenTelemetry, métricas Prometheus, logging estructurado (structlog) y trazado distribuido listos para producción.
Requisitos del sistema
- Python 3.14 (requerido por pyproject.toml)
- Node.js >= 24 y pnpm >= 12.4 (para frontend y tooling)
- PostgreSQL 14+ (base de datos principal, usado por Django, channels, dramatiq, cache)
- Redis (requerido para channels, cache, rate-limiting y celery/dramatiq)
- Docker y Docker Compose (para instalación recomendada en entornos pequeños/pruebas)
- Kubernetes + Helm (para despliegues en producción a gran escala)
- Mínimo 2 GB RAM y 2 vCPU para instancias pequeñas; escalar según carga
Instalación con Docker Compose
Instalación con Docker Compose (recomendado para pruebas/pequeños entornos)
La documentación oficial proporciona un archivo docker-compose.yml con los servicios: server (authentik), worker (tareas en background), postgres, redis y opcionalmente un proxy inverso (Traefik/NGINX). Los pasos generales son:
curl -L https://goauthentik.io/docker-compose.yml -o docker-compose.yml
# Generar claves secretas (ejecutar una vez)
# Ver docs: https://docs.goauthentik.io/docs/install-config/install/docker-compose/
# Levantar servicios
docker compose up -d
# Ver logs
docker compose logs -f
Instalación en Kubernetes con Helm
Para entornos de producción se recomienda el chart oficial de Helm. Requiere configurar valores para PostgreSQL externo, Redis, ingress, certificados TLS y recursos.
helm repo update
helm install authentik authentik/authentik \
–namespace authentik –create-namespace \
-f values-production.yaml
Acceder al proyecto
Interfaz web de administración
Tras el despliegue, la UI está disponible en el puerto configurado (por defecto 9000 HTTP o 9443 HTTPS si se usa proxy con TLS). Accede con el usuario administrador creado durante el bootstrap (ver logs del contenedor server para contraseña inicial o variable AUTHENTIK_BOOTSTRAP_PASSWORD).
API REST y OpenAPI
Endpoint base: /api/v3/. Documentación Swagger en /api/schema/swagger/. Requiere token de API o sesión autenticada.
Endpoints de proveedores
SAML: /application/saml/<slug>/sso/ | OIDC: /application/o/<slug>/ | Proxy outpost: según configuración de cada outpost.
Casos de uso
- Sustitución de IdP propietarios (Okta, Auth0, Entra ID, Ping Identity) en entornos autoalojados.
- SSO centralizado para aplicaciones internas y SaaS (Google Workspace, Microsoft 365, GitHub, GitLab, Atlassian, etc.).
- Federación de identidades entre organizaciones mediante SAML/OIDC.
- Protección de aplicaciones legacy sin soporte SSO usando outposts en modo proxy/forward-auth.
- Autenticación multifactor obligatoria y adaptativa según políticas de riesgo (geoIP, dispositivo, reputación).
- Provisioning y desprovisioning automático de usuarios/grupos vía SCIM 2.0 hacia aplicaciones conectadas.
- Gestión de identidades para clústeres Kubernetes (OIDC para kubectl, admission webhooks).
- Portal de aplicaciones personalizado por usuario/grupo con branding por tenant.
Configuración avanzada
Blueprints (configuración como código)
Permite definir tenants, proveedores, flujos, políticas, aplicaciones y certificados en archivos YAML/JSON versionables. Se aplican al arranque o vía API.
version: 1
entries:
– model: authentik.providers.oauth2.oauth2provider
identifiers: [slug]
attrs:
name: Mi App
slug: mi-app
client_type: confidential
redirect_uris:
– https://app.ejemplo.com/callback
scopes:
– openid
– profile
Políticas de expresión
Escribe lógica de decisión en Python (sandbox) o Go (ak-guardian) para evaluar contexto de request: usuario, IP, geoIP, dispositivo, hora, atributos LDAP, etc.
request.user.attributes.get('department') == 'IT' and \
request.geoip.country_code in ['ES', 'PT'] and \
authentik.policies.reputation.check(request.ip) > 50
Outposts embebidos y remotos
Despliega outposts en la misma red que aplicaciones protegidas (modo proxy) o en DMZ (modo forward-auth). Configuración via UI o blueprint; certificados gestionados por authentik (ACME/Let's Encrypt o BYO).
services:
outpost-proxy:
image: ghcr.io/goauthentik/proxy:2026.11.0-rc1
environment:
AUTHENTIK_INSECURE: "false"
AUTHENTIK_HOST: https://auth.ejemplo.com
AUTHENTIK_TOKEN: <token-outpost>
ports:
– "80:80"
– "443:443"
Certificados y PKI interna
Gestión de autoridades certificadoras, certificados TLS para outposts, firmas SAML/OIDC y mTLS. Soporte ACME (Let's Encrypt, ZeroSSL, Buypass) y certificados importados.
Internacionalización y branding
Soporte multiidioma (archivos en locales.yaml) y personalización de plantillas, logos, colores y CSS por tenant o global.
Gestión y mantenimiento
Actualizaciones
Seguir la guía de versiones en la documentación. En Docker Compose: pull de nuevas imágenes y recreate. En Helm: helm upgrade. Revisar changelog para migraciones de BD y breaking changes.
docker compose pull
docker compose up -d
# Helm
helm repo update
helm upgrade authentik authentik/authentik -n authentik -f values-production.yaml
Backups
Backup de PostgreSQL (pg_dump) y volúmenes de certificados/keys. La configuración en blueprints permite reconstruir estado sin backup de BD si se usa GitOps.
Migraciones de base de datos
Se aplican automáticamente al arrancar el contenedor server. En clústeres, usar initContainers o jobs de Helm para ejecutar migrate antes de escalar workers.
Monitoreo y salud
Endpoint /health/ para liveness/readiness. Métricas Prometheus en /metrics/. Logs estructurados JSON en stdout. Integración nativa con OpenTelemetry (OTLP HTTP).
Limpieza de sesiones y tokens expirados
Tareas programadas (cron jobs via dramatiq) limpian sesiones, tokens, códigos de autorización y eventos antiguos. Configurable en UI: System > Tasks > Schedules.
Stack técnico
- Python 3.14
- Django 5.2
- Django REST Framework 3.18
- PostgreSQL 14+ (psycopg 3)
- Redis (channels, cache, dramatiq)
- Dramatiq (cola de tareas) con backend PostgreSQL
- Daphne / Uvicorn (ASGI)
- TypeScript / React (frontend, Docusaurus para docs)
- Node.js 24 + pnpm
- Rust (ak-guardian, componentes de alto rendimiento)
- Go (outpost proxy, ak-guardian)
- OpenTelemetry (instrumentación, métricas, trazas)
- Prometheus (métricas)
- Docker / Kubernetes / Helm
- Traefik / NGINX (ingress proxy recomendado)
Referencias oficiales
- Repositorio oficial GitHub: https://github.com/goauthentik/authentik
- Documentación oficial: https://docs.goauthentik.io
- Guía de instalación Docker Compose: https://docs.goauthentik.io/docs/install-config/install/docker-compose/
- Guía de instalación Kubernetes (Helm): https://docs.goauthentik.io/docs/install-config/install/kubernetes/
- Chart Helm oficial: https://github.com/goauthentik/helm
- DigitalOcean Marketplace: https://marketplace.digitalocean.com/apps/authentik
- AWS CloudFormation templates: https://docs.goauthentik.io/docs/install-config/install/aws/
- Comunidad Discord: https://goauthentik.io/discord
- Política de seguridad: https://github.com/goauthentik/authentik/blob/main/SECURITY.md
- Licencia MIT (código principal): https://github.com/goauthentik/authentik/blob/main/LICENSE
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
