Workspace als Identity Provider nutzen
Nutzen Sie den Workspace Identity Provider, wenn Anwendungen ihre Benutzer über Workspace anmelden und zentrale Freischaltungen aus Workspace beziehen sollen. Der OIDC Enterprise Core stellt Discovery, JWKS, Authorization Code mit PKCE, Token, UserInfo, Feature-Scopes, Entitlements und Backchannel Logout für OIDC-basierte Anwendungen wie Matrix, Forgejo und spätere Dienste bereit.
Der Identity Provider ist nicht dasselbe wie Provider-Verbindungen. Provider- Verbindungen verbinden Workspace als Client mit externen Diensten, zum Beispiel Google Search Console. Der Identity Provider arbeitet in die andere Richtung: Externe Anwendungen vertrauen Workspace als Aussteller für Identität, Sitzungszustand und Freischaltungen.
Voraussetzungen
Prüfen Sie diese Punkte, bevor Sie eine Anwendung anbinden:
| Bereich | Voraussetzung |
|---|---|
| Feature-Gate | Für den Tenant ist identity_provider.sso in der Feature-Tabelle aktiv. |
| Zugriff | Sie haben identity_provider_clients:list, identity_provider_clients:update, identity_provider_feature_scopes:list, identity_provider_feature_scopes:update, identity_provider_entitlements:list, identity_provider_entitlements:update, identity_provider_sessions:list und identity_provider_logout_deliveries:list. |
| Dispatch | Der Dienst, der Logout-Deliveries ausliefert, hat identity_provider_logout:dispatch. |
| Public URL | Produktive Deployments setzen server.publicURL auf die öffentliche Workspace-URL, zum Beispiel https://workspace.example. |
| Anwendung | Die Anwendung akzeptiert OIDC Discovery, JWKS und OIDC Back-Channel Logout. |
| Logout URI | Die Backchannel-Logout-URI der Anwendung nutzt HTTPS. |
| PKCE | Die Anwendung nutzt den Authorization-Code-Flow mit code_challenge_method=S256. |
OIDC Discovery
Geben Sie angebundenen Anwendungen diese öffentlichen Endpunkte:
| Zweck | Endpunkt |
|---|---|
| Discovery | /api/v1/idp/oidc/.well-known/openid-configuration |
| JWKS | /api/v1/idp/oidc/jwks |
| Authorize | /api/v1/idp/oidc/authorize |
| Token | /api/v1/idp/oidc/token |
| UserInfo | /api/v1/idp/oidc/userinfo |
Workspace erzeugt den Issuer aus server.publicURL und hängt /api/v1/idp/oidc an. Setzen Sie diese Konfiguration in produktiven Deployments, damit Discovery, ID Token, Access Token und Logout Tokens denselben öffentlichen Issuer verwenden. Ohne server.publicURL nutzt Workspace nur den direkten Request-Host und den TLS-Zustand; freie X-Forwarded-*-Header ändern den Issuer nicht.
OIDC-Anmeldung ausführen
Konfigurieren Sie die Anwendung für den Authorization-Code-Flow mit PKCE. Der Authorize-Request muss response_type=code, client_id, redirect_uri, scope mit openid, code_challenge und code_challenge_method=S256 enthalten. Wenn keine aktive Workspace-Session den Tenant vorgibt, geben Sie zusätzlich tenant_id mit.
Workspace nutzt nur bestehende Browser-Sessions. Wenn kein Benutzer angemeldet ist, leitet Workspace nach sicherer Client- und Redirect-URI-Prüfung mit error=login_required zur Anwendung zurück. Der Token-Endpunkt löst Codes genau einmal gegen Client-Secret, Redirect-URI und PKCE-Verifier ein. UserInfo akzeptiert gültige Bearer Access Tokens.
Anwendung registrieren
Registrieren Sie eine Anwendung in der System-Integration Identity Provider. Die Oberfläche zeigt die SSO-Readiness, Application Profiles, OIDC-Clients, die Secret-Rotation, Feature-Scopes, Entitlements, OIDC-Sessions und Backchannel-Logout-Deliveries. Für automatisierte Einrichtung oder noch nicht oberflächengeführte Bereiche stehen dieselben Admin-Endpunkte zur Verfügung:
| Zweck | Endpunkt |
|---|---|
| Readiness prüfen | GET /api/v1/idp/readiness |
| Anwendungsprofile listen | GET /api/v1/idp/application-profiles |
| Anwendungen listen | GET /api/v1/idp/applications |
| Anwendung speichern | PUT /api/v1/idp/applications/{applicationKey} |
| Client-Secret rotieren | POST /api/v1/idp/applications/{applicationKey}/secret |
| Feature-Scopes listen | GET /api/v1/idp/applications/{applicationKey}/feature-scopes |
| Feature-Scope speichern | PUT /api/v1/idp/applications/{applicationKey}/feature-scopes/{scope} |
| Entitlements listen | GET /api/v1/idp/applications/{applicationKey}/entitlements |
| Entitlement speichern | PUT /api/v1/idp/applications/{applicationKey}/entitlements/{identityId} |
| OIDC-Sessions listen | GET /api/v1/idp/sessions?applicationKey={applicationKey} |
| Backchannel-Logout-Deliveries listen | GET /api/v1/idp/backchannel-logout/deliveries?applicationKey={applicationKey} |
Speichern Sie nur HTTPS-Redirect-URIs ohne Fragment und ohne Userinfo sowie eine HTTPS-Backchannel-Logout-URI ohne Fragment und ohne Userinfo. Tragen Sie Feature-Scopes und Entitlements so ein, dass sie fachlich zur Anwendung passen. Anwendungen wie Matrix oder Forgejo können später aus diesen Scopes ableiten, welche Funktionen ein Benutzer in der Anwendung nutzen darf. Begrenzen Sie die erlaubten Feature-Scopes am Client, wenn eine Anwendung nur einen Teil der aktiven und gewährten Scopes akzeptieren soll.
Nutzen Sie GET /api/v1/idp/application-profiles, um versionierte Workspace-Defaults für typische Anwendungen abzurufen. Der Profilkatalog enthält derzeit Matrix/Synapse und Forgejo. Er liefert empfohlene OIDC-Scopes, Redirect-URI-Hinweise, Claim-Mapping-Vorschläge und App-seitige Konfigurationsschlüssel. Workspace legt damit keine externen Anwendungen an und speichert keine installationsspezifischen Hostnamen oder Secrets.
Konfigurieren Sie claimMapping, wenn eine Anwendung andere Claim-Namen erwartet. Workspace unterstützt Claim-Mapping V1 als typisierten Vertrag, nicht als freie Transformation:
| Feld | Bedeutung |
|---|---|
version | Muss 1 sein. |
rolesClaim | Claim-Name für Rollen; leer blendet Rollen aus. |
entitlementsClaim | Claim-Name für Feature-Scopes; leer blendet Entitlements aus. |
tenantClaim | Claim-Name für die Tenant-ID. |
groupsClaim | Optionaler Alias-Claim für Rollen oder Entitlements. |
groupsSource | roles oder entitlements. |
includeTenant | Gibt an, ob die Tenant-ID ausgegeben wird. |
includeEmail | Gibt an, ob email und preferred_username ausgegeben werden. |
includeProfile | Gibt an, ob name ausgegeben wird. |
Workspace lässt nicht zu, dass Mapping-Ziele JWT- oder OIDC-Standardclaims wie sub, iss, aud, exp, iat, sid, client_id oder scope überschreiben. Nutzen Sie für App-Kompatibilität stattdessen Alias-Claims wie groups oder permissions.
Der Authorization-Code-Flow akzeptiert nur bekannte OIDC-Scopes und aktive Feature-Scopes der jeweiligen Anwendung. openid ist verpflichtend. email schaltet email und preferred_username frei, profile schaltet name frei und groups schaltet den konfigurierten groupsClaim frei. Für jede Anmeldung muss ein aktives Entitlement für die Identity und die Anwendung existieren. Angeforderte Feature-Scopes müssen als aktive App-Scopes existieren, in einer optionalen Client-Allowlist enthalten sein und im aktiven Entitlement der Identity liegen. Workspace prüft diesen Vertrag vor der Code-Ausgabe und erneut beim Token-Exchange.
Rotieren Sie für jeden OIDC-Client ein Client-Secret. Workspace zeigt das neue Secret nur unmittelbar nach der Rotation an und speichert anschließend nur einen Hash. Listen- und Detailantworten enthalten ausschließlich den Secret-Status. Prüfen Sie danach GET /api/v1/idp/readiness; die Antwort nennt fehlende Voraussetzungen als stabile Codes, zum Beispiel idp_sso_feature_disabled, idp_no_active_oidc_clients, idp_clients_missing_secrets, idp_clients_missing_redirect_uris, idp_duplicate_client_ids, idp_backchannel_clients_missing_logout_uri oder idp_signing_unavailable.
Feature-Scopes und Entitlements verwalten
Legen Sie zuerst die Feature-Scopes einer Anwendung in der Identity-Provider-Systemfläche an. Ein Scope ist ein stabiler technischer Wert wie rooms:moderate; labelKey und descriptionKey verweisen auf die spätere Anzeige in Anwendung oder Admin-Oberfläche. Setzen Sie isActive=false, wenn ein Scope nicht mehr vergeben werden soll. Workspace widerruft bestehende OIDC-Sessions und Access-Token-Handles für die Anwendung, wenn sicherheitsrelevante Client-, Entitlement- oder Feature-Scope-Änderungen den bestehenden Zugriff verändern.
Speichern Sie danach Entitlements für einzelne Workspace-Identitäten. Die Oberfläche verwendet dafür die stabile Identity-ID. Ein Entitlement enthält Rollen und Feature-Scopes für genau eine Anwendung und einen Tenant. Workspace akzeptiert nur Feature-Scopes, die für dieselbe Anwendung aktiv definiert sind. Der OIDC Authorization-Code-Flow projiziert nur angeforderte und gewährte Feature-Scopes als entitlements in ID Token, Access Token und UserInfo. Rollen werden als roles ausgegeben, wenn das Claim-Mapping sie aktiviert.
Backchannel Logout
Wenn eine Identity ihre Tenant-Mitgliedschaft verliert oder ein App-Zugriff widerrufen wird, widerruft Workspace aktive OIDC-Sessions und zugehörige Access-Token-Handles. Für Sessions mit aktivem Backchannel Logout merkt Workspace Backchannel-Logout-Deliveries vor. Die Auslieferung erfolgt automatisch durch den IdP-Logout-Dispatch-Worker. Die Admin-Oberfläche zeigt Sessions und Deliveries pro Client; für operative Nachläufe oder gezielte Prüfungen steht zusätzlich die geschützte Admin-Dispatch-API bereit:
| Zweck | Endpunkt |
|---|---|
| Logout-Deliveries ausliefern | POST /api/v1/idp/backchannel-logout/dispatch |
Der Dispatch sendet pro Delivery ein signiertes logout_token als application/x-www-form-urlencoded HTTP-POST an die Backchannel-Logout-URI der Anwendung. Die Anwendung muss das Token gegen den JWKS-Endpunkt prüfen und die lokale Session mit der enthaltenen sid schließen.
Der Worker verarbeitet nur Tenants, bei denen identity_provider.sso aktiv ist. Fällige Deliveries werden vor dem HTTP-POST kurz geleast, damit parallele Worker dieselbe Delivery nicht doppelt senden. Fehlgeschlagene Versuche bleiben in der Outbox und werden über next_attempt_at erneut versucht; nach den vorgesehenen Versuchen landet die Delivery im Status failed.
Grenzen des OIDC Enterprise Core
Der Enterprise-Core-Schnitt enthält OIDC Discovery, JWKS, Authorization Code mit PKCE, Token, UserInfo, Backchannel Logout, Feature-Scopes, Entitlements, Session-/Delivery-Operability und eine Admin-Oberfläche für diese Kernflächen. Es gibt weiterhin keine Refresh Tokens, keine Consent-Oberfläche, keinen produktiven LDAPS-Server und kein Remote-Provisioning für Matrix oder Forgejo. Planen Sie die App-seitige Einrichtung und Abnahme deshalb als nächsten Integrationsschritt auf diesem Kern.