App braucht rollenbasierten Zugriff? App Roles Benutzern und Gruppen zuweisen

Veröffentlicht am:

Manche Apps brauchen mehr als Anmeldung.

Sie muessen wissen, was der angemeldete Benutzer innerhalb der Anwendung tun darf.

Fuer rollenbasierten Zugriff auf Anwendungsebene ist das Microsoft-Entra-Muster:

App Roles Benutzern und Gruppen zuweisen.

Dieses Muster wird verwendet, wenn:

  • ein Benutzer vorhanden ist
  • die App rollenbasierte Autorisierung braucht
  • Zugriff ueber Microsoft Entra Benutzer oder Gruppen verwaltet werden soll
  • die Anwendung einen lesbaren Rollen-Claim erhalten soll
  • Autorisierung auf dem roles Claim im Token basiert

In diesem Beispiel:

  • CloudTrips App ist die Enterprise Application
  • GRP-CloudTrips-Approvers ist die Genehmigergruppe
  • Employee ist ein Benutzer in dieser Gruppe

Der wichtige Ablauf ist:

App Role erstellen -> Benutzer oder Gruppe zuweisen -> Benutzer meldet sich an -> Token enthaelt roles

App Roles vs delegierte Scopes

App Roles und delegierte Scopes loesen unterschiedliche Autorisierungsprobleme.

Delegierte Scopes beantworten:

Welche Berechtigung hat die Client-App erhalten, um diese API fuer den angemeldeten Benutzer aufzurufen?

In Tokens erscheinen delegierte Scopes in:

scp

App Roles beantworten:

Welche Rolle hat dieser Benutzer oder diese Gruppe innerhalb der Anwendung?

In Tokens erscheinen App Roles in:

roles

Verwende Scopes fuer API-Berechtigungsgrenzen.

Verwende Rollen fuer Business- oder App-Autorisierung.

Beispiel:

{
  "scp": "Trips.Read",
  "roles": ["Trips.Approver"]
}

Das bedeutet:

scp=Trips.Read       -> Client darf Read-Operationen aufrufen
roles=Trips.Approver -> Benutzer darf Reisen in der App genehmigen

CloudTrips App Registration erstellen

Erstelle die Anwendung, die die Rollen definiert.

Gehe zu:

Entra ID > App registrations > New registration

Erstelle eine Anwendung:

Name: CloudTrips-App
Supported account types: Single tenant

Diese App Registration enthaelt die App-Role-Definitionen.

Microsoft Entra App-Registrierung mit CloudTrips App als Anwendungsname

App Role erstellen

Oeffne in CloudTrips-App:

App roles > Create app role

Erstelle eine Rolle:

Display name: Trips Approver
Allowed member types: Users/Groups
Value: Trips.Approver
Description: Can approve CloudTrips travel requests
Do you want to enable this app role: Yes

Der Value erscheint spaeter im roles Claim des Tokens.

CloudTrips App roles Seite mit Trips Approver und Allowed member types Users and Groups

Security Group erstellen

Erstelle eine Gruppe fuer Benutzer, die diese Rolle erhalten sollen.

Gehe zu:

Entra ID > Groups > New group

Erstelle eine Security Group:

Group type: Security
Group name: GRP-CloudTrips-Approvers
Membership type: Assigned

Eine Gruppe macht die Rollenzuweisung leichter wartbar, wenn Benutzer Teams wechseln.

Microsoft Entra New group Formular mit GRP-CloudTrips-Approvers

Benutzer zur Gruppe hinzufuegen

Oeffne die Gruppe:

GRP-CloudTrips-Approvers > Members > Add members

Fuege den Employee-Benutzer hinzu.

Danach ist der Benutzer Mitglied der Gruppe, aber die Gruppe muss noch der App Role zugewiesen werden.

CloudTrips Approvers Gruppenmitglieder-Seite mit hinzugefuegtem Employee-Benutzer

Enterprise Application oeffnen

Die App-Role-Zuweisung erfolgt auf der Enterprise Application.

Gehe zu:

Entra ID > Enterprise applications

Oeffne:

CloudTrips-App

Die App Registration definiert die Rolle.

Die Enterprise Application ist der Ort, an dem Benutzer und Gruppen dieser Rolle zugewiesen werden.

Microsoft Entra Enterprise applications Seite mit ausgewaehlter CloudTrips App

Gruppe der App Role zuweisen

Oeffne in der Enterprise Application:

Users and groups > Add user/group

Waehle:

Users and groups: GRP-CloudTrips-Approvers
Role: Trips Approver

Speichere die Zuweisung.

Jetzt kann jeder Benutzer in dieser Gruppe beim Sign-in den Trips.Approver Rollen-Claim erhalten.

CloudTrips Enterprise Application Users and groups Seite mit Approvers-Gruppe und Trips Approver Rolle

Zuweisung bestaetigen

Die Enterprise Application sollte jetzt zeigen:

GRP-CloudTrips-Approvers -> Trips Approver

Der Benutzer muss sich eventuell abmelden und erneut anmelden, bevor die Rolle in einem neuen Token erscheint.

CloudTrips Enterprise Application Zuweisungsliste mit Approvers-Gruppe und Trips Approver Rolle

Rollen-Claim im Token

Nach dem Sign-in kann die App ein Token mit folgendem Claim erhalten:

{
  "roles": [
    "Trips.Approver"
  ]
}

Wenn die App auch delegierte API-Scopes anfordert, kann das Token beides enthalten:

{
  "scp": "Trips.Read",
  "roles": [
    "Trips.Approver"
  ]
}

Verwende den Rollen-Claim im Anwendungscode:

Approval-Workflow erlauben, wenn roles Trips.Approver enthaelt

Warum App Roles statt Group IDs?

Die Anwendung koennte Gruppen-IDs direkt pruefen, aber App Roles sind meistens sauberer.

App Roles bieten:

  • lesbare Autorisierungswerte
  • stabile app-spezifische Rollennamen
  • einfachere Code-Pruefungen
  • klarere Audit-Gespraeche
  • weniger Kopplung an rohe Tenant-Gruppen-Objekt-IDs

Gruppen-IDs sind tenant-spezifisch und im Code schwerer zu verstehen.

Grosse Gruppenmitgliedschaften koennen ausserdem Token-Overage-Verhalten ausloesen, bei dem das Token nicht alle Gruppen direkt enthaelt.

App Roles vermeiden das, weil die App den Rollenwert erhaelt, den sie wirklich braucht.

Enterprise-Hinweis

Verwende wenn moeglich Gruppen fuer Zuweisungen, nicht einzelne Benutzer.

Ein gutes Muster ist:

GRP-CloudTrips-Readers
GRP-CloudTrips-Approvers
GRP-CloudTrips-Admins

Dann mappe diese Gruppen auf App Roles:

Trips.Reader
Trips.Approver
Trips.Admin

Fuer Produktion solltest du dokumentieren:

  • was jede Rolle erlaubt
  • welche Gruppen zugewiesen sind
  • wer jede Gruppe besitzt
  • ob Rollenmitgliedschaft regelmaessig geprueft wird
  • welche App-Screens oder API-Endpunkte die Rolle verlangen