Konfigurera gruppanspråk och approller i token
Den här artikeln hjälper dig att konfigurera dina appar med approlldefinitioner och tilldela säkerhetsgrupper till approller så att du kan förbättra flexibiliteten och kontrollen samtidigt som du ökar programsäkerheten med minsta möjliga behörighet.
Microsoft Entra-ID har stöd för att skicka en användares tilldelade säkerhetsgrupper, Microsoft Entra-katalogroller och distributionsgrupper som anspråk i en token. Du kan använda den här metoden för att skapa auktorisering i appar. Microsoft Entra ID begränsar dock gruppstöd i en token efter tokens storlek. När användaren är medlem i för många grupper finns det inga grupper i token.
I den här artikeln får du lära dig en alternativ metod för att hämta användarinformation i token med hjälp av Microsoft Entra-gruppstöd. I stället konfigurerar du dina appar med approlldefinitioner och tilldelar grupper till approller. Det här Nolltillit bästa praxis för utvecklare förbättrar flexibiliteten och kontrollen samtidigt som programsäkerheten ökar med minsta möjliga behörighet.
Du kan konfigurera gruppanspråk i token som du kan använda i dina program för auktorisering. Kom ihåg att gruppinformationen i token endast är aktuell när du tar emot token. Gruppanspråk stöder två huvudsakliga mönster:
- Grupper som identifieras av deras Microsoft Entra-objektidentifierare (OID).
- Grupper som identifieras med
sAMAccountName
attributet ellerGroupSID
för Active Directory-synkroniserade grupper och användare.
Gruppmedlemskap kan driva auktoriseringsbeslut. I följande exempel visas till exempel vissa anspråk i en token. Du kan lägga till gruppanspråk och roller i antingen ID eller åtkomsttoken.
"aud": "e18c04b1-4868-4b93-93d1-8d71f17ab99b",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1669657224, "nbf": 1669657224, "exp": 1669661124,
"groups": [
"0760b6cf-170e-4a14-91b3-4b78e0739963",
"3b2b0c93-acd8-4208-8eba-7a48db1cd4c0"
],
"oid": "cb7eda1b-d09a-40ae-b8bb-37836ebc6abd",
"sub": "3OBtLXUC2ZrN_ADLNjW9X4o0lcd61py7lgHw3Skh77s",
"tid": "833ced3d-cb2e-41ce-92f1-29e2af035ddc",
"ver": "2.0",
"wids": [
"cf1c38e5-3621-4004-a7cb-879624dced7c",
"b79fbf4d-3ef9-4689-8143-76b194e85509"
]
Anspråksmatrisen groups
består av ID:t för de grupper som användaren är medlem i. Matrisen wids
består av ID:t för De Microsoft Entra-roller som tilldelats den här användaren. cf1c38e5-3621-4004-a7cb-879624dced7c
Här visar att den här användarens tilldelade roller inkluderar Programutvecklare och standardmedlem enligt 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0
indikerar.
Din app kan fatta auktoriseringsbeslut baserat på förekomsten eller frånvaron av dessa anspråk och deras värden. En lista med värden för anspråket wids
finns i Inbyggda Roller i Microsoft Entra.
Om du vill lägga till anspråken och till dina token väljer du Alla grupper enligt följande exempel på Appregistreringar | Token-konfiguration | Valfria anspråk | Redigera grupper anspråksskärmen. wids
groups
Gruppöverförbrukning
När du begär alla grupper i din token enligt ovanstående exempel kan du inte förlita dig på att token har anspråket groups
i din token. Det finns storleksbegränsningar för token och groups
anspråk så att de inte blir för stora. När användaren är medlem i för många grupper måste appen hämta användarens gruppmedlemskap från Microsoft Graph. Gränserna för grupper i ett groups
anspråk är:
- 200 grupper för JSON-webbtoken (JWT).
- 150 grupper för SAML-token (Security Assertion Markup Language).
- Sex grupper när du använder det implicita flödet (till exempel med ASP.NET kärna som hämtar ID-token via den implicita flödesdelen i ett hybridflöde).
- Implicit flöde rekommenderas inte längre för ensideswebbappar.
- Implicit flöde kan endast användas i webbappar för ID-token, aldrig åtkomsttoken, i ett OAuth2-hybridflöde.
Om du använder OpenID Anslut eller OAuth2 kan du ha upp till 200 grupper i din token. Om du använder SAML kan du bara ha 150 grupper eftersom SAML-token är större än OAuth2- och OpenID-Anslut token. Om du använder det implicita flödet är gränsen sex eftersom dessa svar visas i URL:en. I alla dessa fall ser du i stället för att ha ett groups
anspråk en indikation (kallas för gruppöverförbrukning) som anger att användaren är medlem i för många grupper för att få plats i din token.
I följande tokenexempel för en OpenID-anslutning eller OAuth2, JSON-webbtoken (JWT) finns det inget groups
anspråk om användaren är medlem i för många grupper. I stället finns det ett _claim_names
anspråk som innehåller en groups
medlem i matrisen.
I exemplet med ovanstående token ser du att anspråket groups
ska mappas till src1
. I teorin skulle du leta efter anspråket _claim_sources
och sedan hitta src1
medlemmen. Därifrån hittar du den Graph-fråga som du använder för att hämta gruppmedlemskapet. Det finns dock ett problem med det du ser i graph-exempelfrågan. Det går till Azure AD Graph (som Microsoft är inaktuellt), så använd det inte.
Implicit flödesöverförbrukningsindikator görs med ett hasgroups
anspråk i stället för anspråket groups
.
Om du vill säkerställa korrekt auktorisering med gruppmedlemskap måste du låta din app söka efter anspråket groups
. Om det finns använder du det anspråket för att fastställa användarens gruppmedlemskap. Om det inte finns något groups
anspråk kontrollerar du om det finns ett hasgroups
anspråk eller ett _claim_names
anspråk med en groups
medlem i matrisen. Om något av dessa anspråk finns är användaren medlem i för många grupper för token. I det här fallet måste din app använda Microsoft Graph för att fastställa gruppmedlemskapet för användaren. Se Lista en användares medlemskap (direkt och transitiv) för att hitta alla grupper, både direkta och transitiva, som användaren är medlem i.
Om ditt program kräver information om gruppmedlemskap i realtid använder du Microsoft Graph för att fastställa gruppmedlemskap. Kom ihåg att informationen i token som du får endast är uppdaterad när du hämtar token.
Se följande exempel på Appregistreringar | Token-konfigurationEn | Valfria anspråk | Redigera grupper anspråksskärmen. Ett sätt att undvika att träffa ett gruppöverförbrukningsanspråk är att välja Grupper som tilldelats programmet på skärmen Redigera grupper i stället för Alla grupper.
När du väljer Grupper som tilldelats programmet inkluderas en grupp i anspråket groups
om följande villkor är uppfyllda:
- gruppen har tilldelats till Företagsappen
- användaren är direkt medlem i gruppen
Från och med den här artikelns publikation stöder inte de grupper som tilldelats till programalternativet indirekt medlemskap. Grupptilldelning kräver minst en P1-nivålicens. En kostnadsfri klientorganisation kan inte tilldela grupper till ett program.
Grupper och approller
Ett annat sätt att undvika problemet med gruppöverförbrukning är att appen definierar approller som tillåter användare och grupper som medlemstyper. Som du ser i följande exempel på Appregistreringar | Approller | Skärmen Skapa approll väljer du Användare/grupper för Tillåtna medlemstyper.
Efter att ha skapat approllen i appens registrering kan IT-proffs tilldela användare och grupper till rollen. Din app hämtar ett roles
anspråk i din token (ID-token för appen, åtkomsttoken för API:er) med alla inloggade användares tilldelade roller enligt följande tokenexempel.
"aud": "acaf6ce9-81f0-462a-a93d-a314070738d3",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1670826509, "nbf": 1670826509, "exp": 1670830409,
"name": "Kyle Marsh",
"oid": "cb7eda1b-d09a-419e-b8bb-37836ebc6abd",
"preferred_username": "kylemar@idfordevs.dev",
"roles": [
"Approver",
"Reviewer"
],
"sub": "dx-4lf-0loB3c3uVrULnZ2VTLuRRWYff0q7-QlIfYU4",
"tid": "833ced3d-cb3e-41de-92f1-29e2af035ddc",
Kom ihåg att låta programmet hantera följande villkor:
- avsaknad av
roles
anspråk - användaren har ingen rolltilldelning
- flera värden i anspråket
roles
när användaren har mer än en rolltilldelning
När du skapar approller som tillåter användare och grupper som medlemmar definierar du alltid en baslinjeanvändarroll utan utökade auktoriseringsroller. När en Enterprise App-konfiguration kräver tilldelning kan endast användare med direkt tilldelning till ett program eller medlemskap i en grupp som tilldelats appen använda appen.
Om din app har definierat approller som tillåter användare och grupper som medlemmar måste en av de definierade approllerna vara en del av användarens eller gruppens tilldelning till appen när en användare eller grupp tilldelas till appen. Om din app bara har definierat förhöjda roller (till exempel admin
) för appen tilldelas alla användare och grupper administratörsrollen. När du definierar en basroll (till exempel ) kan användare och grupper som user
tilldelats till appen tilldelas basanvändarrollen.
Förutom att undvika överförbrukningsanspråk för grupper behöver inte en annan fördel med att använda roller mappa mellan ett grupp-ID eller namn och vad det innebär i ditt program. Din kod kan till exempel söka efter administratörsrollsanspråket i stället för att iterera genom grupper i anspråken groups
och bestämma vilka grupp-ID:n som ska tillåtas administratörsfunktionen.
Verifiera och använda roller i koden
När du definierar approller för din app är det ditt ansvar att implementera auktoriseringslogik för dessa roller. Se Implementera rollbaserad åtkomstkontroll i program för att lära dig hur du kan implementera auktoriseringslogik i dina appar.
Nästa steg
- Anpassa token beskriver den information som du kan ta emot i Microsoft Entra-token. Den förklarar hur du anpassar token för att förbättra flexibiliteten och kontrollen samtidigt som du ökar säkerheten för program utan förtroende med minsta möjliga behörighet.
- Konfigurera gruppanspråk för program med hjälp av Microsoft Entra-ID visar hur Microsoft Entra-ID kan tillhandahålla en användares gruppmedlemskapsinformation i token för användning i program.
- Metodtips för säkerhet för programegenskaper beskriver omdirigerings-URI, åtkomsttoken (används för implicita flöden), certifikat och hemligheter, program-ID-URI och programägarskap.
- Microsofts identitetsplattform omfång, behörigheter och medgivande förklarar de grundläggande begreppen åtkomst och auktorisering som hjälper dig att skapa säkrare och mer tillförlitliga program.
- Använd bästa praxis för utveckling av Nolltillit identitets- och åtkomsthantering i programutvecklingslivscykeln för att skapa säkra program.