App braucht Microsoft Graph Zugriff? API Permissions konfigurieren

Veröffentlicht am:

Eine App muss Microsoft Graph aufrufen.

Vielleicht soll sie Gruppenmitgliedschaften fuer den angemeldeten Benutzer anzeigen oder Directory-Automatisierung im Hintergrund ausfuehren.

Das Microsoft-Entra-Muster ist:

App Registration oeffnen -> Microsoft Graph Permission hinzufuegen -> Delegated oder Application Permission auswaehlen -> Consent erteilen, wenn erforderlich -> Token anfordern -> Graph aufrufen

Dieser Trip konzentriert sich auf Microsoft Graph Permissions.

Das ist etwas anderes als das Expose einer eigenen API Scope.

Hier ist Microsoft Graph die Resource API.

Deine App ist der Client, der Entra um Zugriff auf Graph bittet.

Delegated vs Application Permissions

Microsoft Graph Permissions gibt es in zwei Haupttypen.

Delegated permissions

Verwende sie, wenn:

  • ein Benutzer angemeldet ist
  • die App im Namen dieses Benutzers handelt
  • Graph-Zugriff durch die eigenen Berechtigungen des Benutzers begrenzt sein soll
  • Tokens den scp Claim enthalten

Beispiel:

GroupMember.Read.All

Application permissions

Verwende sie, wenn:

  • kein Benutzer anwesend ist
  • eine Hintergrund-App oder ein Daemon Graph aufruft
  • die App als sie selbst handelt
  • Tokens den roles Claim enthalten
  • normalerweise Admin Consent erforderlich ist

Beispiel:

User.Read.All

Waehle die am wenigsten privilegierte Permission, die das Szenario unterstuetzt.

App Registration oeffnen

Gehe zu:

Entra ID > App registrations

Erstelle oder oeffne die Anwendung, die Microsoft Graph Zugriff braucht.

Beispiel:

CloudTrips-Graph-App

Diese App Registration ist die Client-Anwendung, die ein Graph Access Token anfordern wird.

Microsoft Entra App registrations Seite mit CloudTrips Graph App

API Permissions oeffnen

Oeffne in der App Registration:

API permissions

Diese Seite zeigt die APIs und Permissions, die bereits fuer die App konfiguriert sind.

Waehle:

Add a permission

CloudTrips Graph App API permissions Seite mit Add a permission

Microsoft Graph auswaehlen

Auf der Request API permissions Seite waehlst du:

Microsoft APIs > Microsoft Graph

Microsoft Graph ist die API-Oberflaeche fuer Microsoft 365 und Entra Directory-Daten.

Request API permissions Seite mit ausgewaehltem Microsoft Graph

Permission Type auswaehlen

Waehle den Permission Type, der zum Runtime-Szenario passt.

Fuer eine App mit Benutzeranmeldung:

Delegated permissions

Fuer eine Hintergrund-App:

Application permissions

Waehle Application Permissions nicht nur, weil sie maechtiger aussehen.

Sie geben oft tenant-weiten Zugriff und brauchen normalerweise Admin Consent.

Microsoft Graph Permissions Seite mit Delegated permissions und Application permissions Auswahl

Delegated Permission hinzufuegen

Fuer ein einfaches Szenario mit angemeldetem Benutzer waehlst du:

Delegated permissions > GroupMember.Read.All

Damit kann die App Gruppenmitgliedschaften im Namen des angemeldeten Benutzers lesen.

Das Access Token enthaelt spaeter:

scp=GroupMember.Read.All

Microsoft Graph Delegated Permissions Suche mit ausgewaehltem GroupMember.Read.All

Application Permission hinzufuegen

Fuer ein Automatisierungsszenario waehlst du eine Application Permission nur dann, wenn die App wirklich App-only Zugriff braucht.

Beispiel:

Application permissions > User.Read.All

Damit kann die App Benutzerprofile ohne angemeldeten Benutzer lesen, nachdem Admin Consent erteilt wurde.

Das Access Token enthaelt spaeter einen Graph Role Claim wie:

roles=["User.Read.All"]

Microsoft Graph Application Permissions Suche mit ausgewaehltem User.Read.All

Nach dem Hinzufuegen der Permissions gehst du zurueck zu:

API permissions

Einige Permissions brauchen Admin Approval, bevor die App sie verwenden kann.

Waehle:

Grant admin consent

Nach erteiltem Consent sollte der Status anzeigen, dass Consent fuer den Tenant erteilt wurde.

API permissions Seite mit Microsoft Graph Permissions und Grant admin consent

Token Claims bestaetigen

Fordere ein Token fuer Microsoft Graph an.

Bei Delegated Permissions sollte das Token enthalten:

{
  "aud": "https://graph.microsoft.com",
  "scp": "GroupMember.Read.All"
}

Bei Application Permissions sollte das Token enthalten:

{
  "aud": "https://graph.microsoft.com",
  "roles": [
    "User.Read.All"
  ]
}

Das beweist, dass die App ein Token fuer Graph mit der konfigurierten Permission erhalten hat.

Dekodiertes Microsoft Graph Access Token mit aud und scp oder roles Claims

Enterprise-Hinweis

Microsoft Graph Permissions koennen sensible Tenant-Daten freigeben.

Empfohlene Checkliste:

  • Delegated Permissions verwenden, wenn ein Benutzerkontext erforderlich ist
  • Application Permissions nur fuer App-only Automatisierung verwenden
  • die am wenigsten privilegierte Graph Permission verwenden
  • dokumentieren, warum jede Permission benoetigt wird
  • Admin Consent bewusst erteilen
  • App Permissions und Consent regelmaessig pruefen
  • ungenutzte Permissions entfernen
  • Audit Logs fuer Consent- und App-Permission-Aenderungen ueberwachen