Groepsclaims en app-rollen configureren in tokens
Dit artikel helpt u bij het configureren van uw apps met app-roldefinities en het toewijzen van beveiligingsgroepen aan app-rollen, zodat u de flexibiliteit en controle kunt verbeteren terwijl de beveiliging van toepassingen met minimale bevoegdheden wordt verhoogd.
Microsoft Entra ID ondersteunt het verzenden van de toegewezen beveiligingsgroepen van een gebruiker, Microsoft Entra-directoryrollen en distributiegroepen als claims in een token. U kunt deze methode gebruiken om autorisatie in apps te stimuleren. Microsoft Entra ID beperkt echter groepsondersteuning in een token op basis van de grootte van het token. Wanneer de gebruiker lid is van te veel groepen, zijn er geen groepen in het token.
In dit artikel leert u een alternatieve benadering voor het ophalen van gebruikersgegevens in tokens met behulp van ondersteuning voor Microsoft Entra-groepen. In plaats daarvan configureert u uw apps met app-roldefinities en wijst u groepen toe aan app-rollen. Deze best practice voor Zero Trust-ontwikkelaars verbetert de flexibiliteit en controle en verhoogt de beveiliging van toepassingen met minimale bevoegdheden.
U kunt groepsclaims configureren in tokens die u in uw toepassingen kunt gebruiken voor autorisatie. Houd er rekening mee dat groepsinformatie in het token alleen actueel is wanneer u het token ontvangt. Groepsclaims ondersteunen twee hoofdpatronen:
- Groepen die worden geïdentificeerd door hun OID-kenmerk (Microsoft Entra Object Identifier).
- Groepen die worden geïdentificeerd door het
sAMAccountName
kenmerk ofGroupSID
het kenmerk voor door Active Directory gesynchroniseerde groepen en gebruikers.
Groepslidmaatschap kan autorisatiebeslissingen stimuleren. In het volgende voorbeeld ziet u bijvoorbeeld enkele claims in een token. U kunt groepsclaims en rollen toevoegen aan id- of toegangstokens.
"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"
]
De groups
claimmatrix bestaat uit de id's van de groepen waartoe deze gebruiker lid is. De wids
matrix bestaat uit de id's van de Microsoft Entra-rollen die aan deze gebruiker zijn toegewezen. cf1c38e5-3621-4004-a7cb-879624dced7c
Hier ziet u dat de toegewezen rollen van deze gebruiker toepassingsontwikkelaar en standaardlid bevatten, zoals 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0
wordt aangegeven.
Uw app kan autorisatiebeslissingen nemen op basis van de aanwezigheid of afwezigheid van deze claims en hun waarden. Zie ingebouwde Microsoft Entra-rollen voor een lijst met waarden voor de wids
claim.
Als u de groups
en wids
claims wilt toevoegen aan uw tokens, selecteert u Alle groepen, zoals wordt weergegeven in het volgende voorbeeld van het App-registraties | Tokenconfiguratie | Optionele claims | Claimscherm Groepen bewerken.
Groepsoverschrijdingen
Wanneer u alle groepen in uw token aanvraagt, zoals wordt weergegeven in het bovenstaande voorbeeld, kunt u niet vertrouwen op het token met de groups
claim in uw token. Er gelden groottelimieten voor tokens en claims groups
, zodat ze niet te groot worden. Wanneer de gebruiker lid is van te veel groepen, moet uw app het groepslidmaatschap van de gebruiker ophalen uit Microsoft Graph. De limieten voor groepen in een groups
claim zijn:
- 200 groepen voor JSON-webtokens (JWT).
- 150 groepen voor SAML-tokens (Security Assertion Markup Language).
- Zes groepen bij het gebruik van de impliciete stroom (bijvoorbeeld met behulp van ASP.NET kern waarmee id-tokens worden ontvangen via het impliciete stroomgedeelte van een hybride stroom).
- Impliciete stroom wordt niet meer aanbevolen voor web-apps met één pagina.
- Impliciete stroom kan alleen worden gebruikt in web-apps voor het id-token, nooit het toegangstoken, in een hybride OAuth2-stroom.
Als u OpenID Verbinding maken of OAuth2 gebruikt, kunt u maximaal 200 groepen in uw token hebben. Als u SAML gebruikt, kunt u slechts 150 groepen hebben, omdat SAML-tokens groter zijn dan OAuth2 en OpenID Verbinding maken tokens. Als u de impliciete stroom gebruikt, is de limiet zes omdat deze antwoorden worden weergegeven in de URL. In al deze gevallen ziet u in plaats van een groups
claim een indicatie (ook wel een groepsoverschrijding genoemd) die aangeeft dat de gebruiker lid is van te veel groepen die in uw token passen.
In het volgende tokenvoorbeeld, voor een OpenID-verbinding of OAuth2, JSON-webtoken (JWT), is er geen groups
claim als de gebruiker lid is van te veel groepen. In plaats daarvan is er een _claim_names
claim die een groups
lid van de matrix bevat.
In het bovenstaande tokenvoorbeeld ziet u dat de groups
claim moet worden toegewezen aan src1
. In theorie zou je dan naar de _claim_sources
claim zoeken en vervolgens het src1
lid vinden. Hier vindt u de Graph-query die u zou gebruiken om het groepslidmaatschap op te halen. Er is echter een probleem met wat u ziet in de voorbeeldquery van Graph. Het gaat naar Azure AD Graph (wat Microsoft afkeurt), dus gebruik deze niet.
Impliciete stroomoverschrijdingsindicatie wordt uitgevoerd met een hasgroups
claim in plaats van de groups
claim.
Laat uw app de claim controleren om de groups
juiste autorisatie te garanderen met behulp van groepslidmaatschap. Als deze aanwezig is, gebruikt u deze claim om het groepslidmaatschap van de gebruiker te bepalen. Als er geen groups
claim is, controleert u op het bestaan van een hasgroups
claim of een _claim_names
claim met een groups
lid van de matrix. Als een van deze claims aanwezig is, is de gebruiker lid van te veel groepen voor het token. In dit geval moet uw app Microsoft Graph gebruiken om het groepslidmaatschap voor de gebruiker te bepalen. Zie Lijst met lidmaatschappen van een gebruiker (direct en transitief) om alle groepen te vinden, zowel direct als transitief, waarvan de gebruiker lid is.
Als uw toepassing realtime informatie over groepslidmaatschap vereist, gebruikt u Microsoft Graph om het groepslidmaatschap te bepalen. Houd er rekening mee dat de informatie in het token dat u ontvangt, alleen up-to-date is op het moment dat u het token verkrijgt.
Zie het volgende voorbeeld van het App-registraties | Tokenconfiguratie | Optionele claimscherm | Groepen bewerken. Een manier om te voorkomen dat een groepsoverschrijdingsclaim wordt bereikt, is door groepen te selecteren die zijn toegewezen aan de toepassing in het scherm Groepen claim bewerken in plaats van Alle groepen.
Wanneer u Groepen selecteert die zijn toegewezen aan de toepassing, wordt een groep opgenomen in de groups
claim als aan de volgende voorwaarden wordt voldaan:
- de groep is toegewezen aan de enterprise-app
- de gebruiker rechtstreeks lid is van de groep
Vanaf de publicatie van dit artikel biedt de optie Groepen die zijn toegewezen aan de toepassing geen ondersteuning voor indirect lidmaatschap. Voor groepstoewijzing is minimaal een licentie op P1-niveau vereist. Een gratis tenant kan geen groepen toewijzen aan een toepassing.
Groepen en app-rollen
Een andere manier om het probleem met groepsoverschrijding te voorkomen, is dat de app app-rollen definieert die gebruikers en groepen toestaan als lidtypen. Zoals wordt weergegeven in het volgende voorbeeld van het scherm App-registraties | App-rollen | App-rol maken, selecteert u Gebruikers/groepen voor toegestane ledentypen.
Nadat de app-rol is gemaakt in de registratie van de app, kunnen IT-professionals gebruikers en groepen toewijzen aan de rol. Uw app ontvangt een roles
claim in uw token (id-token voor app, toegangstoken voor API's) met alle toegewezen rollen van de aangemelde gebruiker, zoals wordt weergegeven in het volgende tokenvoorbeeld.
"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",
Vergeet niet dat uw toepassing de volgende voorwaarden afhandelt:
- afwezigheid van
roles
claim - gebruiker heeft geen roltoewijzing
- meerdere waarden in de
roles
claim wanneer de gebruiker meer dan één roltoewijzing heeft
Wanneer u app-rollen maakt waarmee gebruikers en groepen als leden worden toegestaan, definieert u altijd een basislijngebruikersrol zonder verhoogde autorisatierollen. Wanneer een enterprise-app-configuratie toewijzing vereist, kunnen alleen gebruikers met directe toewijzing aan een toepassing of lidmaatschap van een groep die aan de app is toegewezen, de app gebruiken.
Als uw app app-rollen heeft gedefinieerd die gebruikers en groepen als leden toestaan, moet een van de gedefinieerde app-rollen deel uitmaken van de toewijzing van de gebruiker of groep aan de app wanneer een gebruiker of groep aan de app is toegewezen. Als uw app alleen verhoogde rollen (zoals admin
) voor de app heeft gedefinieerd, krijgen alle gebruikers en groepen de beheerdersrol toegewezen. Wanneer u een basisrol definieert (zoals user
), kunnen gebruikers en groepen die aan de app zijn toegewezen, de basisgebruikersrol toewijzen.
Naast het vermijden van groepsoverschrijdingsclaims, hoeft u geen rollen te gebruiken tussen een groeps-id of -naam en wat dit betekent in uw toepassing. Uw code kan bijvoorbeeld zoeken naar de beheerdersrolclaim in plaats van door groepen in de groups
claims te doorlopen en te bepalen welke groeps-id's de beheerdersfunctionaliteit moeten hebben toegestaan.
Rollen in uw code verifiëren en gebruiken
Wanneer u app-rollen voor uw app definieert, is het uw verantwoordelijkheid om autorisatielogica voor deze rollen te implementeren. Zie Op rollen gebaseerd toegangsbeheer implementeren in toepassingen voor meer informatie over het implementeren van autorisatielogica in uw apps.
Volgende stappen
- Tokens aanpassen beschrijft de informatie die u kunt ontvangen in Microsoft Entra-tokens. In dit artikel wordt uitgelegd hoe u tokens aanpast om de flexibiliteit en controle te verbeteren en tegelijkertijd de beveiliging van nul vertrouwensrelaties met minimale bevoegdheden te verhogen.
- Groepsclaims configureren voor toepassingen met behulp van Microsoft Entra-id laat zien hoe Microsoft Entra-id de groepslidmaatschapsgegevens van een gebruiker kan bieden in tokens voor gebruik in toepassingen.
- Aanbevolen beveiligingsprocedures voor toepassingseigenschappen beschrijven omleidings-URI, toegangstokens (gebruikt voor impliciete stromen), certificaten en geheimen, de URI van de toepassings-id en het eigendom van de toepassing.
- Microsoft Identity Platform-bereiken, machtigingen en toestemming legt de basisconcepten van toegang en autorisatie uit om u te helpen veiligere en betrouwbare toepassingen te bouwen.
- Gebruik best practices voor identiteits- en toegangsbeheer van Zero Trust in de ontwikkelingslevenscyclus van uw toepassing om veilige toepassingen te maken.