Background-App braucht Zugriff? Client Credentials Flow verwenden

Veröffentlicht am:

In Enterprise-Systemen kommunizieren Backend-Anwendungen oft ohne Benutzerinteraktion.

Dieses Muster wird verwendet, wenn:

  • kein Benutzer beteiligt ist
  • Systeme APIs direkt aufrufen
  • die Authentifizierung über Microsoft Entra ID erfolgt

In diesem Beispiel:

  • Dynamics 365 (D365) ist die aufrufende Anwendung
  • Middleware API ist die Resource-Anwendung

Die Authentifizierung erfolgt mit dem OAuth 2.0 Client Credentials Flow. Die Autorisierung wird über App Roles gesteuert.

Middleware API App erstellen

Erstelle zuerst die Resource-Anwendung.

Gehe zu:

Entra ID > App registrations > New registration

Erstelle eine Anwendung:

Name: Middleware-API

Diese App Registration repräsentiert die API, die später Access Tokens empfängt und validiert.

Microsoft Entra App Registration-Erstellungsseite mit Middleware-API

API exponieren

Öffne innerhalb von Middleware-API:

Expose an API

Setze die Application ID URI:

api://<application-id>

Behalte das von Azure generierte Format bei, außer du hast einen klaren Namensstandard für deinen Tenant.

Diese ID wird später zur Audience für Tokens, die für die Middleware API ausgestellt werden.

Microsoft Entra Middleware API App Registration mit Expose an API und Application ID URI-Konfiguration

App Role erstellen

Erstelle innerhalb von Middleware-API eine Application Role:

App roles > Create role

Beispiel:

Name: Middleware.Access
Value: middleware.access
Allowed member types: Applications

Das definiert anwendungsbasierte Autorisierung. Es ist kein benutzerbasierter Zugriff.

Die Middleware API kann später prüfen, ob das eingehende Token die erforderliche Rolle enthält.

Microsoft Entra App Role-Erstellungsseite mit Middleware.Access für Application permissions

D365 Client App und Secret erstellen

Erstelle jetzt die aufrufende Anwendung.

Gehe zu:

Entra ID > App registrations > New registration

Erstelle eine Anwendung:

Name: D365-Integration-App

Erstelle danach ein Client Secret:

Certificates & secrets > New client secret

Speichere den Secret-Wert sicher. Er wird benötigt, wenn sich die Client-Anwendung gegenüber Entra ID authentifiziert.

In echten Projekten sind Managed Identities oder zertifikatsbasierte Credentials oft besser. Wenn ein Client Secret verwendet wird, sollte es regelmäßig rotiert und niemals im Source Code gespeichert werden.

Microsoft Entra D365 App Registration mit Client Secret-Erstellungsseite

App Role über API Permissions zuweisen

Gehe zu:

App registrations > D365-Integration-App > API permissions

Wähle dann:

Add a permission

Wähle:

My APIs > Middleware-API > Application permissions > Middleware.Access

Klicke danach auf:

Grant admin consent

Damit erhält die D365 Client-Anwendung die Berechtigung, Tokens für die Middleware API mit der App Role middleware.access anzufordern.

Nachdem Admin Consent erteilt wurde, kann Entra ID Application Tokens mit dieser Rolle ausstellen.

Microsoft Entra API Permissions-Tab mit Middleware API App Role und Grant admin consent-Button

Client Credentials Flow zur Laufzeit

Zur Laufzeit fordert D365 ein Token bei Entra ID an:

POST https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token

Request Body:

client_id=D365_CLIENT_ID
client_secret=SECRET
grant_type=client_credentials
scope=api://<application-id>/.default

Der .default Scope sagt Entra ID, dass ein Token mit den bereits gewährten Application Permissions der Client App ausgestellt werden soll.

Token-Ergebnis

Das Access Token enthält:

  • App Role: middleware.access
  • Audience: Middleware API
  • keine Benutzeridentität

Dieser letzte Punkt ist wichtig: Das ist ein Application Token, kein delegiertes Benutzer-Token.

Enterprise-Hinweis

In echten Enterprise-Umgebungen gibt es meistens mehrere Stages:

  • DEV
  • TEST oder STAGE
  • PROD

Wenn diese Umgebungen in verschiedenen Azure Subscriptions innerhalb desselben Entra ID Tenants getrennt sind, ist es Best Practice, separate App Registrations pro Umgebung zu erstellen.

Beispiel:

D365-Integration-App-DEV
D365-Integration-App-TEST
D365-Integration-App-PROD

Middleware-API-DEV
Middleware-API-TEST
Middleware-API-PROD

Das bietet:

  • Isolation von Secrets und Credentials
  • sichere Produktionsgrenzen
  • unabhängige Deployments
  • keine Token-Wiederverwendung zwischen Umgebungen
  • klareres Auditing und Troubleshooting