authentik: Proveedor de identidad open source para SSO moderno

Publicado por


authentik
Identity Provider

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.

Soporte nativo para SAML, OAuth2/OIDC, LDAP, RADIUS, SCIM y WebAuthn en una sola plataforma autoalojable.

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:

# Clonar el repositorio o descargar docker-compose.yml desde la docs
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 add authentik https://charts.goauthentik.io
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.

# Ejemplo de blueprint para proveedor OAuth2
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
– email

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.

# Ejemplo política expresión Python
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).

# docker-compose fragment para outpost proxy
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
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.

docker exec -t authentik-postgres pg_dump -U authentik authentik > backup-$(date +%F).sql

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.

docker compose run –rm server python manage.py migrate

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)

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *