Authentik SSO
Sistema de autenticación centralizado
Overview
Authentik es el Identity Provider (IdP) para todos los servicios que requieren autenticación.
URL: auth.illanes00.cl
Flujos Soportados
- OAuth2 / OIDC - Para aplicaciones web
- LDAP - Para servicios legacy
- SAML - Para integraciones enterprise
- Proxy - Para aplicaciones sin auth nativo
Configurar Aplicación con OIDC
1. Crear Provider en Authentik
- Ir a Admin → Providers → Create
- Tipo: OAuth2/OpenID Provider
- Configurar:
- Name:
mi-proyecto - Client ID: (auto-generado)
- Redirect URIs:
https://mi-proyecto.illanes00.cl/auth/callback
- Name:
2. Crear Application
- Ir a Admin → Applications → Create
- Configurar:
- Name:
Mi Proyecto - Slug:
mi-proyecto - Provider: Seleccionar el provider creado
- Name:
3. Configurar en la Aplicación
Variables de entorno necesarias:
OIDC_ISSUER=https://auth.illanes00.cl/application/o/mi-proyecto/
OIDC_CLIENT_ID=<client-id-del-provider>
OIDC_CLIENT_SECRET=<client-secret-del-provider>
4. Ejemplo FastAPI
from authlib.integrations.starlette_client import OAuth
oauth = OAuth()
oauth.register(
name='authentik',
client_id=os.getenv('OIDC_CLIENT_ID'),
client_secret=os.getenv('OIDC_CLIENT_SECRET'),
server_metadata_url=f"{os.getenv('OIDC_ISSUER')}/.well-known/openid-configuration",
client_kwargs={'scope': 'openid email profile'},
)Grupos y Permisos
Grupos Predefinidos
| Grupo | Descripción |
|---|---|
admins |
Acceso total a todas las aplicaciones |
developers |
Acceso a herramientas de desarrollo |
users |
Acceso básico |
Asignar Grupo a Usuario
- Admin → Users → Seleccionar usuario
- Groups → Add to group
Proxy Authentication
Para aplicaciones sin soporte OAuth nativo:
# En Caddy
mi-app.illanes00.cl {
forward_auth localhost:9000 {
uri /outpost.goauthentik.io/auth/caddy
copy_headers X-Authentik-Username X-Authentik-Groups X-Authentik-Email
}
reverse_proxy localhost:8105
}
Troubleshooting
Error “Invalid redirect URI”
Verificar que la URI de callback está registrada en el provider: - Admin → Providers → Mi Provider → Redirect URIs
Error “Token expired”
Verificar sincronización de hora en el servidor:
timedatectl statusLogs de Authentik
docker logs authentik-server -f
# o si usa systemd
journalctl -u authentik -f