# ===== Runtime ===== NODE_ENV=development PORT=4040 AUTH_LOCAL_PORT=4040 # coincide con 'expose' del servicio auth # ===== Session (usa el Redis del stack) ===== # Para DEV podemos reutilizar el Redis de Authentik. En prod conviene uno separado. SESSION_SECRET=pon-una-clave-larga-y-unica REDIS_URL=redis://authentik-redis:6379 # ===== DB principal (metadatos de SuiteCoffee) ===== # Usa el alias de red del servicio 'db' (compose: aliases [dev-db]) DB_HOST=dev-db DB_PORT=5432 DB_NAME=dev-suitecoffee DB_USER=dev-user-suitecoffee DB_PASS=dev-pass-suitecoffee # ===== DB tenants (Tenants de SuiteCoffee) ===== TENANTS_HOST=dev-tenants TENANTS_DB=dev-postgres TENANTS_USER=dev-user-postgres TENANTS_PASS=dev-pass-postgres TENANTS_PORT=5432 TENANT_INIT_SQL=/home/mateo/SuiteCoffee/services/auth/src/db/initTenant.sql # TENANT_INIT_SQL=~/SuiteCoffee/services/app/src/db/01_init.sql # ===== (Opcional) Colores UI, si alguna vista los lee ===== COL_PRI=452D19 # Marrón oscuro COL_SEC=D7A666 # Crema / Café COL_BG=FFA500 # Naranja # ===== Authentik — Admin API (server-to-server dentro de la red) ===== # Usa el alias de red del servicio 'authentik' y su puerto interno 9000 AUTHENTIK_BASE_URL=http://authentik:9000 AUTHENTIK_TOKEN=eE3bFTLd4Rpt3ZkcidTC1EppDYMIr023ev3SXt4ImHynOfAGRVtAZVBXSNxj AUTHENTIK_DEFAULT_GROUP_NAME=suitecoffee-users # ===== OIDC (DEBE coincidir con el Provider) ===== # DEV (todo dentro de la red de Docker): # - El auth service redirige al navegador a este issuer. Si NO tenés reverse proxy hacia Authentik, # esta URL interna NO será accesible desde el navegador del host. En ese caso, ver nota más abajo. OIDC_ISSUER=https://authentik.suitecoffee.mateosaldain.uy/application/o/suitecoffee/ OIDC_CLIENT_ID=ydnp9s9I7G4p9Pwt5OsNlcpk1VKB9auN7AxqqNjC OIDC_CLIENT_SECRET=yqdI00kYMeQF8VdmhwN5QWUzPLUzRBYeeAH193FynuVD19mo1nBRf5c5IRojzPrxDS0Hk33guUwHFzaj8vjTbTRetwK528uNJ6BfrYGUN2vzxgdMHFLQOHSTR0gR1LtG # Redirect URI que definiste en el Provider. Usa el alias de red del servicio 'auth' (dev-auth) # Si accedés desde el host sin proxy, usa mejor http://localhost:4040/auth/callback y añadilo al Provider. OIDC_REDIRECT_URI=https://suitecoffee.mateosaldain.uy/auth/callback # Cómo querés que maneje la contraseña Authentik para usuarios NUEVOS creados por tu backend: # - TEMP_FORCE_CHANGE: crea un password temporal y obliga a cambiar en el primer login (recomendado si usás login con usuario/clave) # - INVITE_LINK: envías/entregás un link de “establecer contraseña” (necesita flow de Enrollment/Recovery y SMTP configurado) # - SSO_ONLY: no setea password local; login solo por Google/Microsoft/WebAuthn AK_PASSWORD_MODE=TEMP_FORCE_CHANGE # (Opcional) longitud del password temporal AK_TEMP_PW_LENGTH=12 # 3) Configuración en Authentik (por modo) # A) TEMP_FORCE_CHANGE (password temporal + cambio obligado) # Flow de Autenticación # Entra al Admin de Authentik → Flows → tu Authentication Flow (el que usa tu Provider OIDC). # Asegurate de que tenga: # Identification Stage (identifica por email/username), # Password Stage (para escribir contraseña). # Con eso, cuando el usuario entre con la clave temporal, Authentik le pedirá cambiarla. # Provider OIDC (suitecoffee) # Admin → Applications → Providers → tu provider de SuiteCoffee → Flow settings # Authentication flow: seleccioná el de arriba. # (Opcional) Email SMTP # Si querés notificar o enviar contraseñas temporales/enlaces desde Authentik, configura SMTP en Admin → System → Email. # Resultado: el usuario se registra en tu app → lo redirigís a /auth/login → Authentik pide email+clave → entra con la temporal → obliga a cambiarla → vuelve a tu app. # B) INVITE_LINK (enlace de “establecer contraseña”) # SMTP # Admin → System → Email: configura SMTP (host, puerto, credenciales, remitente). # Flow de Enrollment/Recovery # Admin → Flows → clona/crea un flow de Enrollment/Recovery con: # Identification Stage (email/username), # Email Stage (envía el link con token), # Password Stage (para que defina su clave), # (opcional) Prompt/ User Write para confirmar. # Guardalo con un Slug fácil (ej. enroll-set-password). # Cómo usarlo # Caminos: # Manual desde UI: Admin → Directory → Invitations → crear invitación, elegir Flow enroll-set-password, seleccionar usuario, copiar link y enviar. # Automático (más adelante): podemos automatizar por API la creación de una Invitation y envío de mail. (Si querés, te armo el helper akCreateInvitation(userUUID, flowSlug).) # Resultado: el registro en tu app no pone password; el usuario recibe un link para establecer la clave y desde ahí inicia normalmente. # C) SSO_ONLY (sin contraseñas locales) # Configura un Source (Google Workspace / Microsoft Entra / WebAuthn): # Admin → Directory → Sources: crea el Source (por ejemplo, Google OAuth o Entra ID). # Activa Create users (para que se creen en Authentik si no existen). # Mapea email y name. # Authentication Flow # Agrega una Source Stage del proveedor (Google/Microsoft/WebAuthn) en tu Authentication Flow. # (Podés dejar Password Stage deshabilitado si querés solo SSO.) # Provider OIDC # En tu Provider suitecoffee, seleccioná ese Authentication Flow. # Resultado: el usuario se registra en tu app → al entrar a /auth/login ve botón Iniciar con Google/Microsoft → hace click, vuelve con sesión, tu backend setea sc.sid.