Dela via


Konfigurera gruppanspråk och applikationsroller i tokens

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 så konfigurerar du apparna med app-rolldefinitioner och tilldelar grupper till approller. Metodtips för Zero Trust-utvecklare förbättrar flexibiliteten och kontrollen samtidigt som programsäkerheten ökar med minsta möjliga behörighet.

Du kan konfigurera gruppanspråk i tokens 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 eller GroupSID 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": "00001111-aaaa-2222-bbbb-3333cccc4444", 
"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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"sub": "3OBtLXUC2ZrN_ADLNjW9X4o0lcd61py7lgHw3Skh77s",
"tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff", 
"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 finns wids.

Om du vill lägga till anspråken groups och wids till dina token väljer du Alla grupper enligt följande exempel på För appregistreringar | tokenkonfigurationen | Valfria anspråk | Redigera anspråk på skärmen för grupper.

Skärmbild av skärmen Redigera gruppanspråk som visar valda grupptyper: Grupper som tilldelats till programmet.

Gruppöverförbrukning

När du begär alla grupper i din token enligt exemplet kan du inte lita 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 Core som hämtar ID-token via den implicita delen av ett hybridflöde).
    • Implicit flöde rekommenderas inte längre för enkeltsidiga webbapplikationer.
    • 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 Connect 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 Connect-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 istället för att ha ett groups-anspråk en indikation (kallad 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.

Implicit flödesöverförbrukningsindikator görs med anspråk hasgroups i stället för anspråk groups.

Om du vill säkerställa korrekt auktorisering med gruppmedlemskap bör din app söka efter anspråket groups. Om möjligt, använd 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 | tokenkonfiguration | Valfria anspråk | Redigera gruppanspråksskärmen. Ett sätt att undvika att få ett gruppöverförbrukningsanspråk är att välja Grupper som tilldelats programmet i rutan Redigera gruppanspråk i stället för Alla grupper.

Skärmbild av skärmen Redigera gruppanspråk som visar valda grupptyper: Säkerhetsgrupper, Katalogroller och Alla grupper.

När du väljer Grupper som tilldelats programmet inkluderas en grupp i anspråket groups om följande villkor är uppfyllda:

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 hyresgäst kan inte tilldela grupper till en applikation.

Grupper och app roller

Ett annat sätt att undvika problemet med överskridande av gruppgränser ä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.

Skärmbild av skärmen Skapa approll som visar Tillåtna medlemstyper: Användare/grupper.

När du har skapat approllen i appens registrering kan du tilldela användare och grupper till rollen. Din app får ett roles anspråk i din token (ID-token för appen, åtkomsttoken för API:er) med alla tilldelade roller för den inloggade användaren, enligt följande tokenexempel.

"aud": "11112222-bbbb-3333-cccc-4444dddd5555",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1670826509, "nbf": 1670826509, "exp": 1670830409,
"name": "Kyle Marsh",
"oid": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"preferred_username": "kylemar@idfordevs.dev",
"roles": [
 "Approver",
 "Reviewer" 
],
"sub": "dx-4lf-0loB3c3uVrULnZ2VTLuRRWYff0q7-QlIfYU4",
"tid": "ccccdddd-2222-eeee-3333-ffff4444aaaa",

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 kravet roles när användaren har flera rolltilldelningar

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 innehåller definierade 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 appen. Om din app endast innehåller definierade upphö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 usertilldelats till appen tilldelas basanvändarrollen.

Förutom att undvika överbelastningsanspråk för grupper är en annan fördel med att använda roller att det inte behövs någon kartläggning mellan ett grupp-ID eller namn och vad det innebär i din applikation. 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. Information om hur du kan implementera auktoriseringslogik i dina appar finns i Implementera rollbaserad åtkomstkontroll i program.

Nästa steg