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:

BereichVoraussetzung
Feature-GateFür den Tenant ist identity_provider.sso in der Feature-Tabelle aktiv.
ZugriffSie 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.
DispatchDer Dienst, der Logout-Deliveries ausliefert, hat identity_provider_logout:dispatch.
Public URLProduktive Deployments setzen server.publicURL auf die öffentliche Workspace-URL, zum Beispiel https://workspace.example.
AnwendungDie Anwendung akzeptiert OIDC Discovery, JWKS und OIDC Back-Channel Logout.
Logout URIDie Backchannel-Logout-URI der Anwendung nutzt HTTPS.
PKCEDie Anwendung nutzt den Authorization-Code-Flow mit code_challenge_method=S256.

OIDC Discovery

Geben Sie angebundenen Anwendungen diese öffentlichen Endpunkte:

ZweckEndpunkt
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:

ZweckEndpunkt
Readiness prüfenGET /api/v1/idp/readiness
Anwendungsprofile listenGET /api/v1/idp/application-profiles
Anwendungen listenGET /api/v1/idp/applications
Anwendung speichernPUT /api/v1/idp/applications/{applicationKey}
Client-Secret rotierenPOST /api/v1/idp/applications/{applicationKey}/secret
Feature-Scopes listenGET /api/v1/idp/applications/{applicationKey}/feature-scopes
Feature-Scope speichernPUT /api/v1/idp/applications/{applicationKey}/feature-scopes/{scope}
Entitlements listenGET /api/v1/idp/applications/{applicationKey}/entitlements
Entitlement speichernPUT /api/v1/idp/applications/{applicationKey}/entitlements/{identityId}
OIDC-Sessions listenGET /api/v1/idp/sessions?applicationKey={applicationKey}
Backchannel-Logout-Deliveries listenGET /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:

FeldBedeutung
versionMuss 1 sein.
rolesClaimClaim-Name für Rollen; leer blendet Rollen aus.
entitlementsClaimClaim-Name für Feature-Scopes; leer blendet Entitlements aus.
tenantClaimClaim-Name für die Tenant-ID.
groupsClaimOptionaler Alias-Claim für Rollen oder Entitlements.
groupsSourceroles oder entitlements.
includeTenantGibt an, ob die Tenant-ID ausgegeben wird.
includeEmailGibt an, ob email und preferred_username ausgegeben werden.
includeProfileGibt 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:

ZweckEndpunkt
Logout-Deliveries ausliefernPOST /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.