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

  1. Ir a Admin → Providers → Create
  2. Tipo: OAuth2/OpenID Provider
  3. Configurar:
    • Name: mi-proyecto
    • Client ID: (auto-generado)
    • Redirect URIs: https://mi-proyecto.illanes00.cl/auth/callback

2. Crear Application

  1. Ir a Admin → Applications → Create
  2. Configurar:
    • Name: Mi Proyecto
    • Slug: mi-proyecto
    • Provider: Seleccionar el provider creado

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

  1. Admin → Users → Seleccionar usuario
  2. 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 status

Logs de Authentik

docker logs authentik-server -f
# o si usa systemd
journalctl -u authentik -f