refactor(mail): send via the SSO app registration, drop SMTP basic auth
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 2m25s
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 2m25s
Mail now uses the same Entra ID app registration as "Sign in with Microsoft" (ENTRA_TENANT_ID, ENTRA_CLIENT_ID, ENTRA_CLIENT_SECRET), so only one enterprise application is needed. The app additionally gets the SMTP.SendAsApp permission; Exchange still limits it to the mailbox granted via Add-MailboxPermission. Password (basic auth) sending is removed entirely: SMTP_HOST, SMTP_PORT, SMTP_PASSWORD and the separate SMTP_OAUTH_* settings are gone. The transport is fixed to smtp.office365.com:587 with required STARTTLS. SMTP_USER (sending mailbox) and SMTP_FROM remain. - lib/entra.ts exposes readEntraAppCredentials(), shared by SSO and mail - diagnosis drops basic-auth-only causes; hints name the ENTRA_* values and warn that an expired secret breaks sign-in and mail together - admin e-mail test, .env.example, docker-compose, k8s manifests, preflight and README updated Verified against Entra ID with fake values: token error classified, client secret never exposed, missing ENTRA_CLIENT_SECRET reported. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
0620e9d79a
commit
11910dd6dd
15 files changed
+211
-309
No files matched your search
+6
-3
@@ -120,11 +120,14 @@ services:
|
||||
SESSION_SECRET: ${SESSION_SECRET:?SESSION_SECRET muss in .env gesetzt sein}
|
||||
GOOGLE_PLACES_API_KEY: ${GOOGLE_PLACES_API_KEY}
|
||||
GOOGLE_PLACE_ID: ${GOOGLE_PLACE_ID}
|
||||
SMTP_HOST: ${SMTP_HOST}
|
||||
SMTP_PORT: ${SMTP_PORT:-587}
|
||||
# Mailversand ueber Microsoft 365 mit OAuth 2.0 — dieselbe
|
||||
# App-Registrierung wie "Mit Microsoft anmelden" (siehe .env.example).
|
||||
SMTP_USER: ${SMTP_USER}
|
||||
SMTP_PASSWORD: ${SMTP_PASSWORD}
|
||||
SMTP_FROM: ${SMTP_FROM:-Wabenhain <[email protected]>}
|
||||
ENTRA_TENANT_ID: ${ENTRA_TENANT_ID}
|
||||
ENTRA_CLIENT_ID: ${ENTRA_CLIENT_ID}
|
||||
ENTRA_CLIENT_SECRET: ${ENTRA_CLIENT_SECRET}
|
||||
ENTRA_REDIRECT_URI: ${ENTRA_REDIRECT_URI}
|
||||
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-http://localhost:3000}
|
||||
NODE_ENV: production
|
||||
|
||||
|
||||
Reference in new issue
Block a user