App braucht rollenbasierten Zugriff? App Roles Benutzern und Gruppen zuweisen
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
rolesClaim 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.

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.

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.

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.

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.

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.

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.

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