Godkendelse og SSO¶

Fanen Godkendelse i Indstillinger giver administratorer mulighed for at konfigurere, hvordan brugere logger på platformen.
Selvregistrering¶
- Tillad selvregistrering: Når aktiveret, kan nye brugere oprette konti ved at klikke på "Tilmeld dig" på loginsiden. Når deaktiveret, kan kun administratorer oprette konti via Inviter bruger-flowet.
SSO (Single Sign-On)-konfiguration¶
SSO giver brugere mulighed for at logge på ved hjælp af deres virksomheds identitetsudbyder i stedet for en lokal adgangskode. Turbo EA understøtter fire SSO-udbydere:
| Udbyder | Beskrivelse |
|---|---|
| Microsoft Entra ID | For organisationer, der bruger Microsoft 365 / Azure AD |
| Google Workspace | For organisationer, der bruger Google Workspace |
| Okta | For organisationer, der bruger Okta som deres identitetsplatform |
| Generic OIDC | For enhver OpenID Connect-kompatibel udbyder (f.eks. Authentik, Keycloak, Auth0) |
Trin for at konfigurere SSO:
- Gå til Admin > Indstillinger > Godkendelse
- Slå Aktivér SSO til
- Vælg din SSO-udbyder fra dropdownen
- Indtast de påkrævede legitimationsoplysninger fra din identitetsudbyder:
- Klient-ID: Applikations-/klient-ID'et fra din identitetsudbyder
- Klienthemmelighed: Applikationshemmeligheden (gemt krypteret i databasen)
- Udbyder-specifikke felter:
- Microsoft: Tenant-ID (f.eks.
your-tenant-idellercommonfor multi-tenant) - Google: Hosted Domain (valgfri, begrænser login til et specifikt Google Workspace-domæne)
- Okta: Okta-domæne (f.eks.
your-org.okta.com) - Generic OIDC: Issuer-URL (f.eks.
https://auth.example.com/application/o/my-app/). For Generic OIDC forsøger systemet auto-discovery via.well-known/openid-configuration-endpointet
- Microsoft: Tenant-ID (f.eks.
- Klik på Gem
Manuelle OIDC-endpoints (avanceret):
Hvis backenden ikke kan nå din identitetsudbyders discovery-dokument (f.eks. på grund af Docker-netværk eller selvsignerede certifikater), kan du manuelt specificere OIDC-endpointsne:
- Authorization Endpoint: URL'en, hvor brugere omdirigeres til at godkende
- Token Endpoint: URL'en, der bruges til at udveksle autorisationskoden for tokens
- JWKS URI: URL'en for JSON Web Key Set, der bruges til at verificere tokensignaturer
Disse felter er valgfrie. Hvis de efterlades tomme, bruger systemet auto-discovery. Når de er udfyldt, tilsidesætter de de auto-discovered værdier.
Test af SSO:
Efter at have gemt, åbn en ny browser-fane (eller inkognito-vindue), og verificér, at SSO-loginknappen vises på loginsiden, og at godkendelse fungerer end-to-end.
Vigtige bemærkninger:
- Klienthemmeligheden gemmes krypteret i databasen og eksponeres aldrig i API-responser
- Når SSO er aktiveret, forbliver lokalt adgangskodelogin tilgængeligt som fallback
- Du kan konfigurere redirect-URI'en i din identitetsudbyder som: https://your-turbo-ea-domain/auth/callback
Godkendelse via reverse proxy¶
Hvis Turbo EA kører bag en proxy, der allerede logger dine brugere på — Azure App Services indbyggede godkendelse ("EasyAuth"), oauth2-proxy, Authelia, Cloudflare Access — kan den acceptere den identitet direkte i stedet for at køre sin egen SSO ovenpå. Ingen OIDC-klient, ingen app-registrering, ingen klienthemmelighed. Brugerne lander i Turbo EA allerede logget på.
Denne funktion konfigureres udelukkende via miljøvariabler og er slået fra som standard.
Før alt andet skal du angive bootstrap-administratoren. Selvregistrering er lukket, mens proxy-godkendelse er slået til, så det er sådan, den første administrator kommer ind — den e-mailadresse tildeles admin-rollen ved første login:
Azure App Service (EasyAuth) — anbefalet opsætning. Turbo EA verificerer det signerede identitetstoken, som Azure videresender med hver forespørgsel (dette kræver App Services token store, som er slået til som standard). AUDIENCE er client ID'et for din EasyAuth-app-registrering; erstat TENANT med dit directory-ID (tenant-ID):
TURBO_EA_PROXY_AUTH_ENABLED=true
TURBO_EA_PROXY_AUTH_TRUST_PLATFORM_HEADERS=true
TURBO_EA_PROXY_AUTH_VERIFY_ID_TOKEN=true
TURBO_EA_PROXY_AUTH_ISSUER=https://login.microsoftonline.com/TENANT/v2.0
TURBO_EA_PROXY_AUTH_AUDIENCE=your-easyauth-app-client-id
TURBO_EA_PROXY_AUTH_JWKS_URI=https://login.microsoftonline.com/TENANT/discovery/v2.0/keys
TURBO_EA_PROXY_AUTH_ALLOWED_DOMAINS=yourcompany.com
TURBO_EA_PROXY_AUTH_LOGOUT_URL=/.auth/logout
TRUST_PLATFORM_HEADERS er påkrævet på App Service
App Service kan ikke indsætte en egen hemmelig header, så
TURBO_EA_PROXY_AUTH_TRUST_PLATFORM_HEADERS=true træder i stedet for
TURBO_EA_PROXY_AUTH_SHARED_SECRET — det er en udtrykkelig anerkendelse af,
at I forlader jer på, at Azure fjerner indgående identitetsheadere, før de
når jeres app. Kontrollen sker før identitetstokenet overhovedet
fortolkes, så tokenverifikation træder ikke i stedet for den. Mangler både
denne indstilling og en delt hemmelighed, fejler hvert eneste login med
Proxy authentication is enabled but not secured — også med
VERIFY_ID_TOKEN=true.
Hvis dit token store er deaktiveret, skal du desuden sætte TURBO_EA_PROXY_AUTH_VERIFY_ID_TOKEN=false og forlade dig alene på header-saneringen. Uden et verificeret token oprettes nye konti ikke automatisk — invitér brugerne først, eller brug bootstrap-administratorens e-mail.
Generisk proxy (oauth2-proxy, Authelia, Traefik forwardAuth, …). Konfigurér proxyen til at injicere en header med en delt hemmelighed på hver forespørgsel, så en forespørgsel, der ikke kom gennem proxyen, aldrig kan forveksles med en, der gjorde. Generér værdien med openssl rand -hex 32:
TURBO_EA_PROXY_AUTH_ENABLED=true
TURBO_EA_PROXY_AUTH_MODE=header
TURBO_EA_PROXY_AUTH_SHARED_SECRET=<genereret værdi, sættes også på proxyen>
TURBO_EA_PROXY_AUTH_EMAIL_HEADER=X-Forwarded-Email
TURBO_EA_PROXY_AUTH_ALLOWED_DOMAINS=yourcompany.com
TURBO_EA_PROXY_AUTH_LOGOUT_URL=/oauth2/sign_out
Sikkerhedsbemærkninger:
- Den delte hemmelighed (eller, på Azure, det verificerede identitetstoken) er det, der gør identiteten troværdig — en header alene kan skrives af hvem som helst. Domæne-allowlisten er påkrævet; sæt kun
TURBO_EA_PROXY_AUTH_ALLOW_ANY_DOMAIN=true, hvis du reelt accepterer ethvert e-maildomæne. - En identitet, der ikke er kryptografisk verificeret, kan logge eksisterende brugere på, men opretter aldrig en ny konto, og afventende invitationer tildeler ikke deres rolle ad denne vej.
TURBO_EA_PROXY_AUTH_LOGOUT_URLer der, hvor Turbo EA sender browseren hen efter Log ud, så proxy-sessionen også afsluttes. Uden den betragter proxyen stadig brugeren som logget på — de lander tilbage på loginsiden og kan komme ind igen med ét klik.
Rollekortlægning (valgfrit). Som standard lander alle på den konfigurerede standardrolle, og en administrator forfremmer derfra. Hvis jeres identitetsudbyder allerede kender svaret — en Entra-appregistrering, der erklærer sine egne approller, eller en oauth2-proxy, der videresender gruppemedlemskab — kan Turbo EA læse det og tildele rollen selv:
TURBO_EA_PROXY_AUTH_ROLE_CLAIM=roles
TURBO_EA_PROXY_AUTH_ROLE_MAP=ADMIN:admin,MANAGER:member,READ-ONLY:viewer
Hvert par skrives KATALOGVÆRDI:turbo-ea-rollenøgle. Når en bruger har flere katalogroller, vinder den første post i kortlægningen — kortlægningens rækkefølge, ikke den rækkefølge udbyderen tilfældigvis sendte dem i, for de to Azure-identitetsformater er ikke enige om den. Matchningen skelner ikke mellem store og små bogstaver på katalogsiden. I generisk proxytilstand læser den samme kortlægning en kommasepareret header i stedet for et claim: TURBO_EA_PROXY_AUTH_ROLE_HEADER=X-Forwarded-Groups.
Kortlægningen er afgørende ved hvert log ind
Ikke kun ved oprettelsen af kontoen. En rolle, der er tildelt manuelt under Administration → Brugere, rulles tilbage, næste gang den person logger ind — hvilket er hele pointen, eftersom det skal have effekt at fjerne nogens katalogrolle. Lad TURBO_EA_PROXY_AUTH_ROLE_MAP være tom, og intet ændrer sig: roller forbliver helt manuelle.
Grænsetilfældene, alle valgt så en konfigurationsfejl ikke kan lukke jer ude:
TURBO_EA_PROXY_AUTH_BOOTSTRAP_ADMIN_EMAILvinder altid over kortlægningen. Hvis de to er uenige, er den adresse administrator.- En værdi, der ikke matcher noget i kortlægningen — eller som peger på en Turbo EA-rolle, der ikke findes eller er arkiveret — falder tilbage til standardrollen.
- Et claim, der mangler helt, lader brugerens nuværende rolle være urørt. Det er bevidst forskelligt fra tilfældet ovenfor: et fejlskrevet
ROLE_CLAIMeller et token-lager, der holder op med at videresende, ville ellers degradere alle brugere på instansen på én gang. - Identiteten skal være værd at betro rettigheder. Rollekortlægning gælder, når identitetstokenet er blevet verificeret (
TURBO_EA_PROXY_AUTH_VERIFY_ID_TOKEN=true), eller der er konfigureret en delt hemmelighed. På App Service med token-lageret slået fra og uden hemmelighed ignoreres kortlægningen, og der skrives en linje i loggen om det — samme ræsonnement som forhindrer en uverificeret header i at oprette en konto.
Alle variabler:
| Variabel | Standard | Formål |
|---|---|---|
TURBO_EA_PROXY_AUTH_ENABLED |
false |
Hovedafbryder |
TURBO_EA_PROXY_AUTH_MODE |
azure_easyauth |
azure_easyauth eller header |
TURBO_EA_PROXY_AUTH_SHARED_SECRET |
— | Påkrævet i header-tilstand; proxyen injicerer den |
TURBO_EA_PROXY_AUTH_SECRET_HEADER |
X-Turbo-EA-Proxy-Secret |
Header, der bærer den delte hemmelighed |
TURBO_EA_PROXY_AUTH_VERIFY_ID_TOKEN |
false |
Verificér det videresendte identitetstoken (Azure-tilstand) |
TURBO_EA_PROXY_AUTH_ISSUER / _AUDIENCE / _JWKS_URI |
— | Indstillinger for tokenverifikation |
TURBO_EA_PROXY_AUTH_TRUST_PLATFORM_HEADERS |
false |
Kun Azure: stol på platformens header-sanering i stedet for en hemmelighed. Påkrævet på App Service |
TURBO_EA_PROXY_AUTH_EMAIL_HEADER |
X-Forwarded-Email |
header-tilstand: e-mail-header |
TURBO_EA_PROXY_AUTH_NAME_HEADER |
X-Forwarded-User |
header-tilstand: header med visningsnavn |
TURBO_EA_PROXY_AUTH_SUBJECT_HEADER |
X-Forwarded-Subject |
header-tilstand: header med stabilt subjekt-id |
TURBO_EA_PROXY_AUTH_ALLOWED_DOMAINS |
— | Kommaseparerede tilladte e-maildomæner (påkrævet) |
TURBO_EA_PROXY_AUTH_ALLOW_ANY_DOMAIN |
false |
Acceptér eksplicit ethvert e-maildomæne |
TURBO_EA_PROXY_AUTH_BOOTSTRAP_ADMIN_EMAIL |
— | Tildeles admin-rollen ved første login |
TURBO_EA_PROXY_AUTH_ROLE_MAP |
— | KATALOGVÆRDI:rollenøgle,… — tom betyder, at roller forbliver manuelle |
TURBO_EA_PROXY_AUTH_ROLE_CLAIM |
roles |
Claim, der bærer katalogrollen (Azure-tilstand) |
TURBO_EA_PROXY_AUTH_ROLE_HEADER |
X-Forwarded-Groups |
header-tilstand: kommasepareret rolle-header |
TURBO_EA_PROXY_AUTH_LOGOUT_URL |
— | Hvor Log ud sender browseren hen |
Begrænsninger: MCP-serverens OAuth-flow kræver, at almindelig SSO er konfigureret; proxy-godkendelse alene dækker det ikke.