Instalación de Authentik como Proveedor de Identidad

Authentik es una solución de proveedor de identidad de código abierto que soporta SSO, OAuth2, SAML y LDAP, ideal para centralizar la autenticación en entornos empresariales auto-hospedados. Su arquitectura basada en Docker facilita el despliegue en Linux con soporte para flujos de autenticación personalizables y proxy de aplicaciones. Esta guía cubre la instalación completa de Authentik, configuración de proveedores OAuth2/SAML, integración LDAP y gestión de usuarios.

Requisitos Previos

  • Servidor Linux (Ubuntu 22.04/Debian 12 o CentOS 9/Rocky 9)
  • Docker 24+ y Docker Compose v2
  • Mínimo 2 GB de RAM (4 GB recomendado en producción)
  • Dominio con DNS configurado y certificado TLS
  • Puerto 443 accesible desde Internet (para SAML/OAuth2 externos)

Instalación con Docker Compose

Crea el directorio de trabajo y descarga la configuración oficial:

# Crear directorio de trabajo
mkdir -p /opt/authentik && cd /opt/authentik

# Descargar el docker-compose oficial de Authentik
curl -fsSL https://goauthentik.io/docker-compose.yml -o docker-compose.yml

# Generar clave secreta y contraseña de base de datos
echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" > .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env

# Configurar la URL de acceso público
echo "AUTHENTIK_ERROR_REPORTING__ENABLED=false" >> .env

Edita el archivo .env para ajustar la configuración:

# Contenido completo del .env
cat >> .env << 'EOF'
AUTHENTIK_EMAIL__HOST=smtp.tudominio.com
AUTHENTIK_EMAIL__PORT=587
AUTHENTIK_EMAIL__USE_TLS=true
[email protected]
AUTHENTIK_EMAIL__PASSWORD=tu_password_smtp
[email protected]
EOF

Inicia los servicios:

# Descargar imágenes y levantar contenedores en segundo plano
docker compose pull
docker compose up -d

# Verificar que todos los contenedores estén funcionando
docker compose ps

Configuración Inicial

Authentik expone el panel en el puerto 9000 (HTTP) y 9443 (HTTPS). Accede al asistente de configuración inicial:

# Ver los logs para confirmar que el servicio arrancó correctamente
docker compose logs -f server

# Obtener la contraseña del usuario administrador por defecto (akadmin)
docker compose exec server ak create_admin_group

Navega a https://tu-servidor:9443/if/flow/initial-setup/ para establecer la contraseña del administrador akadmin.

Configura un proxy inverso con Nginx para producción:

# Instalar Nginx si no está instalado
apt-get install -y nginx certbot python3-certbot-nginx

# Crear configuración de Nginx para Authentik
cat > /etc/nginx/sites-available/authentik << 'EOF'
server {
    listen 80;
    server_name auth.tudominio.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name auth.tudominio.com;

    ssl_certificate /etc/letsencrypt/live/auth.tudominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/auth.tudominio.com/privkey.pem;

    location / {
        proxy_pass https://localhost:9443;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF

ln -s /etc/nginx/sites-available/authentik /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Configuración de Proveedores OAuth2

Para integrar una aplicación mediante OAuth2:

  1. En el panel de Authentik, ve a Applications > Providers > Create
  2. Selecciona OAuth2/OpenID Provider
  3. Configura los parámetros:
# Los valores que necesitarás para tu aplicación cliente
# Client ID: se genera automáticamente
# Client Secret: se genera automáticamente
# Redirect URIs: https://tu-app.com/auth/callback
# Scopes: openid email profile

Ejemplo de configuración para una aplicación que usa el flujo de código de autorización:

# Endpoints de Authentik (reemplaza auth.tudominio.com con tu dominio)
# Authorization: https://auth.tudominio.com/application/o/authorize/
# Token: https://auth.tudominio.com/application/o/token/
# UserInfo: https://auth.tudominio.com/application/o/userinfo/
# JWKS: https://auth.tudominio.com/application/o/<slug>/jwks/

Configuración de Proveedores SAML

Para integraciones SAML 2.0:

  1. Ve a Applications > Providers > Create > SAML Provider
  2. Configura los metadatos del proveedor de servicios (SP)
# Descargar los metadatos del IDP de Authentik
curl -o idp-metadata.xml \
  https://auth.tudominio.com/api/v3/providers/saml/<id>/metadata/?download

# Verificar el contenido de los metadatos
cat idp-metadata.xml | grep -E "(entityID|Location)"

Integración con LDAP

Authentik puede actuar como servidor LDAP para aplicaciones que lo requieren:

# Levantar el contenedor LDAP de Authentik (incluido en docker-compose)
# Por defecto escucha en el puerto 3389 (LDAP) y 6636 (LDAPS)
docker compose exec server ak ldap_status

# Verificar conectividad LDAP
ldapsearch -x -H ldap://localhost:3389 \
  -D "cn=akadmin,ou=users,DC=ldap,DC=goauthentik,DC=io" \
  -w tu_password \
  -b "DC=ldap,DC=goauthentik,DC=io" "(objectClass=person)"

En el panel, crea un LDAP Provider en Applications > Providers > Create > LDAP Provider y configura:

  • Search group: grupo de usuarios que pueden hacer búsquedas LDAP
  • Base DN: el DN base del directorio
  • TLS Server Certificate: certificado para LDAPS

Proxy de Aplicaciones

Authentik puede actuar como proxy inverso autenticador para aplicaciones sin soporte OAuth/SAML:

# En docker-compose.yml, el servicio outpost (proxy) ya está incluido
# Configurar el outpost desde el panel: System > Outposts > Create

# Verificar que el proxy outpost esté funcionando
docker compose logs outpost-proxy

Agrega la aplicación al proxy en Applications > Applications > Create, seleccionando el provider de tipo Proxy con modo Forward auth (single application) o Proxy.

Personalización de Flujos

Authentik permite crear flujos de autenticación personalizados:

# Listar los flujos disponibles via API
curl -H "Authorization: Bearer tu_api_token" \
  https://auth.tudominio.com/api/v3/flows/instances/ | python3 -m json.tool

Para crear un flujo de registro personalizado:

  1. Ve a Flows & Stages > Flows > Create
  2. Añade stages: User Write Stage, Email Verification Stage, User Login Stage
  3. Vincula el flujo a tu aplicación en las propiedades del provider

Solución de Problemas

# Ver logs de todos los servicios en tiempo real
docker compose logs -f

# Reiniciar solo el servidor de Authentik sin afectar la base de datos
docker compose restart server worker

# Verificar el estado de la base de datos PostgreSQL
docker compose exec postgresql pg_isready -U authentik

# Acceder a la consola de Django para depuración
docker compose exec server python -m manage shell

# Comprobar tareas en cola del worker
docker compose exec server python -m manage process_tasks --list

# Ver errores de autenticación recientes en los logs
docker compose logs server 2>&1 | grep -i "error\|exception" | tail -50

Problemas comunes:

  • Contenedor no arranca: Verifica que el archivo .env tenga AUTHENTIK_SECRET_KEY definida
  • Error de certificado: Asegúrate de que el certificado TLS sea válido y accesible
  • LDAP no responde: Comprueba que el outpost LDAP esté correctamente configurado y el grupo asignado exista

Conclusión

Authentik proporciona una plataforma de identidad completa y auto-hospedada que reemplaza soluciones comerciales como Okta o Auth0 para entornos privados. Con soporte nativo para OAuth2, SAML, LDAP y proxy de aplicaciones, es una solución robusta para centralizar la autenticación en infraestructura Linux. La personalización de flujos y la API REST completa permiten adaptarlo a cualquier caso de uso empresarial.