Skip to Content
DocsAuthorityIdentity ProvidersADFS (Active Directory Federated Services)

ADFS (Active Directory Federated Services)

Die ProcessCube Authority unterstützt ADFS als Identitätsprovider, um dort verwaltete Benutzer verwenden zu können.

Client-Definitionen anlegen

Die Erstellung der ADFS-ServiceInstanz sollte bereits erfolgt sein und es muss sichergestellt werden, dass diese durch die Authority erreichbar ist.

Application group

Erstelle eine Application Group. Diese dient als logische Klammer um die Client-Definitionen.

Server application

  • Wähle eine aussagekräftige, URL-kompatible Provider-ID
  • Erstelle eine Server Applikation über den Wizard
  • Notiere die Client ID
  • Wähle eine Redirect URIs in der Form [Authority-Adresse]/acr/adfs_[Provider-ID]/callback
  • Generiere ein Shared Secret uns notiere es

Eine einzelne Instanz der Authority verwendet eine Redirect URI. Die Angabe mehrerer möglicher Redirect URIs ist möglich, um verschiedene Hosting- und Routing-Szenarien zu erlauben.

Web API

  • Erstelle eine Web API Applikation über den Wizard
  • Füge die Client-ID der Server Applikation der Identifier-Liste hinzu
  • Wähle die Access Control Policy nach Belieben aus
  • Wähle die Scopes openid, profile, email und allatclaims

Nach der Erstellung, wird die Definition noch einmal geöffnet und der Tab “Issuance Transform Rules” aufgerufen. Es müssen Zuweisungen von LDAP-Attributen oder auch eigenen Regeln auf die ausgehenden Claim Typen group, email, given_name und family_name erfolgen. Im Regelfall genügen existierende LDAP-Attribute, um diesem Anspruch zu genügen.

Beim Mapping wird ein Anzeigename statt dem Claim Types gezeigt. Diese sind zudem veränderlich. Um die verfügbaren Mappings zwischen Anzeigename (Name) und Claim Type (Short Name) einzusehen, gibt es in der ADFS-Konfiguration die Maske Service -> Claim Descriptions.

Claim-Werte können auch über eigene Selektoren definiert werden. Für die E-Mailadresse wurde hier ein Selektor geschrieben. Eine Referenz findet sich auf https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-the-claim-rule-language .

Konfiguration der Authority

Die ADFS-Erweiterung muss vor der ersten Verwendung konfiguriert werden. Es werden sowohl die Informationen benötigt, die in den vorangegangenen Schritten notiert wurden, als auch Zuweisungen von Gruppenmitgliedschaften zu Rollen.

Pflichtfelder sind mit einem ❗️ gekennzeichnet.

config.json
// [...] "extensions": { "path": "/app/extensions", "configs": { "adfs": { "providers": [ { "id": "adfs_main", "clientId": "04bd1e12-1d39-4976-b641-06d5d51fb311", "clientSecret": "SiOOGcHHVZ9TdBihL6oSMTpu5SSYS9ES7vkogyQB", "authorityUri": "https://addc01.contoso.com/adfs", "redirectUri": "https://authority.contoso.com/acr/adfs_adfs_main/callback", } ] }, "claim_resolver": { "roleMapping": { "TeamAlpha": ["Lane_Developer"] } }, } }

id ❗️ (Provider ID)

Ein eigener, URI-kompatibler Name für den Provider.

Beispiel:

.processcube/authority/config.json
{ "id": "adfs_main" }

clientId ❗️

Die Client-ID der Server Application.

Beispiel:

.processcube/authority/config.json
{ "clientId": "04bd1e12-1d39-4976-b641-06d5d51fb311" }

clientSecret ❗️

Das generierte Shared Secret aus der Server Application.

Beispiel:

.processcube/authority/config.json
{ "clientSecret": "SiOOGcHHVZ9TdBihL6oSMTpu5SSYS9ES7vkogyQB" }

authorityUri ❗️

Die Adresse der AD FS Authority.

Beispiel:

.processcube/authority/config.json
{ "authorityUri": "https://addc01.contoso.com/adfs" }

redirectUri ❗️

Die Adresse, an die der Browser zur Token-Übertragung geleitet wird. Diese kann der Konfiguration der Server Application entnommen werden.

Beispiel:

.processcube/authority/config.json
{ "redirectUri": "https://authority.contoso.com/acr/adfs_adfs_main/callback" }

claim_resolver ❗️

Die Rollen und ihre Claimzuweisungen müssen über die claim_resolver-Extension konfiguriert werden. Gruppennamen müssen zum Claim Type group aus dem ADFS passen. Es können daher sowohl Kurz-, Lang- oder eigene Namen verwendet werden.

Beispiel:

.processcube/authority/config.json
{ "claim_resolver": { "roleMapping": { "roleMapping": { "MayManageProcessCube": [ "can_access_external_tasks", "can_delete_process_model", "can_manage_process_instances", "can_read_cronjob_history", "can_read_process_model", "can_retry_process_instance", "can_subscribe_to_events", "can_terminate_process", "can_trigger_messages", "can_trigger_signals", "can_write_process_model", "upe__can_manage_users" ], "TeamAlpha": ["Lane_Developer"] } }, }

Hinweise zur Claim-Transformation

Die Authority ergänzt ihre eigenen Claims in ausgestellten Tokens. Um arbitrare Informationen aus dem ADFS zu behalten, werden den Claims upn, sid, iss, appid und scp ein adfs_-Präfix vorangestellt.