Sdílet prostřednictvím


Konfigurace skupinových deklarací identity a rolí aplikací v tokenech

Tento článek vám pomůže nakonfigurovat aplikace pomocí definic rolí aplikací a přiřadit skupiny zabezpečení k rolím aplikací, abyste mohli zlepšit flexibilitu a kontrolu a současně zvýšit zabezpečení aplikací s nejnižšími oprávněními.

Microsoft Entra ID podporuje odesílání přiřazených skupin zabezpečení uživatele, role adresáře Microsoft Entra a distribuční skupiny jako deklarace identity v tokenu. Tento přístup můžete použít k implementaci autorizace v aplikacích. Microsoft Entra ID omezuje podporu skupin v tokenu kvůli velikosti tokenu. Pokud je uživatel členem příliš mnoha skupin, v tokenu nejsou žádné skupiny.

V tomto článku se dozvíte o alternativním přístupu k získání informací o uživatelích v tokenech pomocí podpory skupiny Microsoft Entra. Místo toho nakonfigurujete aplikace pomocí definic rolí aplikací a přiřadíte skupiny k rolím aplikací. Tento osvědčený postup pro vývojáře s přístupem Zero Trust zlepšuje flexibilitu a kontrolu, zatímco zvyšuje zabezpečení aplikací s nejnižšími oprávněními.

Můžete nakonfigurovat nároky skupiny v tokenech, které můžete použít ve vašich aplikacích k autorizaci. Mějte na paměti, že informace o skupině v tokenu jsou aktuální pouze při přijetí tokenu. Deklarace identity skupin podporují dva hlavní vzory:

  • Skupiny identifikované pomocí atributu OID (Microsoft Entra object identifier).
  • Skupiny identifikované atributem sAMAccountName nebo GroupSID pro skupiny a uživatele synchronizované službou Active Directory.

Členství ve skupinách může řídit rozhodnutí o autorizaci. Například následující ukázka ukazuje některé nároky v tokenu. Skupinové nároky a role můžete přidat do ID nebo přístupových tokenů.

"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" 
 ]

Pole deklarací identity groups se skládá z ID skupin, ke kterým je tento uživatel členem. Pole wids se skládá z ID rolí Microsoft Entra přiřazených tomuto uživateli. Tady cf1c38e5-3621-4004-a7cb-879624dced7c ukazuje, že přiřazené role tohoto uživatele zahrnují vývojáře aplikací a standardního člena, jak to 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0 označuje.

Vaše aplikace může rozhodovat o autorizaci na základě přítomnosti nebo absence těchto deklarací identity a jejich hodnot. Seznam hodnot pro deklaraci identity wids najdete v předdefinovaných rolí Microsoft Entra.

Pokud chcete přidat groups a wids deklarací identity do tokenů, vyberte Všechny skupiny, jak je znázorněno v následujícím příklad u obrazovky | Konfigurace tokenů | Volitelná deklarace identity | Upravit deklarace identity skupin.

Snímek obrazovky obrazovku pro úpravu deklarací skupin ukazuje vybrané typy skupin: Skupiny přiřazené k aplikaci.

Překročení limitů skupiny

Když požádáte o všechny skupiny v tokenu, jak je znázorněno v předchozím příkladu, nemůžete se spolehnout na token, který má v tokenu deklaraci groups. Existují omezení velikosti tokenů a nároků groups, aby nebyly příliš velké. Pokud je uživatel členem příliš velkého počtu skupin, musí vaše aplikace získat členství uživatele ve skupině z Microsoft Graphu. Omezení pro skupiny v rámci tvrzení groups jsou:

  • 200 skupin pro webové tokeny JSON (JWT).
  • 150 skupin pro tokeny SAML (Security Assertion Markup Language).
  • Šest skupin při použití implicitního toku (například pomocí ASP.NET jádra, které získává tokeny ID prostřednictvím implicitní části toku hybridního toku).
    • Implicitní tok se už nedoporučuje pro jednostrákové webové aplikace.
    • Implicitní tok lze v hybridním toku OAuth2 použít ve webových aplikacích pouze pro ID token, nikdy pro přístupový token.

Pokud používáte OpenID Connect nebo OAuth2, můžete mít v tokenu až 200 skupin. Pokud používáte SAML, můžete mít pouze 150 skupin, protože tokeny SAML jsou větší než tokeny OAuth2 a OpenID Connect. Pokud používáte implicitní tok, limit je šest, protože se tyto odpovědi zobrazují v adrese URL. Ve všech těchto případech se místo nároku groups zobrazí indikace (označovaná jako překročení limitu skupin), která sděluje, že uživatel je členem příliš mnoha skupin, než aby byly zahrnuty do vašeho tokenu.

Deklarace groups má být namapována na src1. Teoreticky byste pak hledali deklaraci _claim_sources a pak našli src1 člena. Odtud byste našli dotaz Graphu, který byste použili k získání členství ve skupině. Došlo ale k problému s tím, co vidíte v ukázkovém dotazu Graphu. Přejde do Azure AD Graphu (který Microsoft už nepoužívá), takže ho nepoužívejte.

Implicitní indikace překročení toku se provádí pomocí tvrzení hasgroups místo tvrzení groups.

Aby byla zajištěna správná autorizace pomocí členství ve skupině, zajistěte, aby vaše aplikace zkontrolovala deklaraci groups. Pokud existuje, použijte tuto deklaraci identity k určení členství uživatele ve skupině. Pokud neexistuje žádná deklarace groups, zkontrolujte existenci deklarace hasgroups nebo deklarace _claim_names s členem pole groups. Pokud existují některé z těchto deklarací identity, je uživatel členem příliš mnoha skupin pro token. V takovém případě musí vaše aplikace používat Microsoft Graph k určení členství ve skupině pro uživatele. Podívejte se na Seznam členství uživatele (přímých a tranzitivních), abyste zjistili všechny skupiny, do kterých uživatel přímo nebo tranzitivně patří.

Pokud vaše aplikace vyžaduje informace o členství ve skupinách v reálném čase, použijte Microsoft Graph k určení členství ve skupině. Mějte na paměti, že informace v tokenu, který obdržíte, jsou aktuální pouze v okamžiku, kdy token získáte.

Prohlédněte si následující příklad obrazovky: registrace aplikací | , konfigurace tokenu | , volitelné deklarace identity | , a úprava deklarace identity skupin. Jedním ze způsobů, jak se vyhnout nadlimitnímu požadavku na skupiny, je vybrat Skupiny přiřazené k aplikaci na obrazovce Upravit skupinové požadavky místo možnosti Všechny skupiny.

Snímek obrazovky ze upravovacího okna skupinových nároků ukazuje vybrané typy skupin: Skupiny zabezpečení, Role adresáře, a Všechny skupiny.

Když vyberete Skupiny přiřazené k aplikaci, skupina se zařadí do požadavku groups, pokud jsou splněny následující podmínky:

K datu publikace tohoto článku nepodporují skupiny přiřazené k možnosti aplikace nepřímé členství. Přiřazení skupiny vyžaduje alespoň licenci na úrovni P1. Bezplatný tenant nemůže přiřadit skupiny k aplikaci.

Skupiny a role aplikací

Dalším způsobem, jak se vyhnout problému s překročením limitu skupiny, je definovat role aplikace, které umožňují uživatelům a skupinám být členy. Jak je znázorněno v následujícím příkladu registrace aplikací | role aplikace | obrazovka Vytvořit roli aplikace, vyberte Uživatelé/skupiny pro Povolené typy členů.

Snímek obrazovky Vytvořit roli aplikace ukazuje povolené typy členů: Uživatelé/skupiny.

Po vytvoření role aplikace v registraci aplikacemohou IT specialisté přiřadit uživatele a skupiny k roli. Aplikace získá v tokenu roles deklaraci identity (token ID pro aplikaci, přístupový token pro rozhraní API) se všemi přiřazenými rolemi přihlášeného uživatele, jak je znázorněno v následujícím příkladu tokenu.

"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",

Nezapomeňte, že vaše aplikace zpracovává následující podmínky:

  • nepřítomnost žádosti o roles
  • uživatel nemá přiřazení role.
  • více hodnot v deklaraci identity roles, pokud má uživatel více než jedno přiřazení rolí

Když vytváříte aplikační role, které umožňují uživatelům a skupinám být členy, vždy definujte základní roli uživatele bez rolí s vyššími oprávněními. Pokud konfigurace podnikové aplikace vyžaduje přiřazení, můžou aplikaci používat jenom uživatelé s přímým přiřazením k aplikaci nebo členství ve skupině přiřazené aplikaci.

Pokud vaše aplikace definovala role, které mohou mít uživatelé a skupiny jako členové, pak když je uživatel nebo skupina přiřazena k aplikaci, musí jedna z definovaných rolí být součástí tohoto přiřazení. Pokud vaše aplikace definuje jenom role se zvýšenými oprávněními (například admin), budou všem uživatelům a skupinám přiřazeny role správce. Když definujete základní roli (například user), můžou se uživatelům a skupinám přiřazeným k aplikaci přiřadit základní role uživatele.

Kromě zamezení uplatňování nároků na nadměrné využití skupiny je další výhodou používání rolí, že není nutné mapovat mezi ID nebo názvem skupiny a jejich významem ve vaší aplikaci. Váš kód může například místo iterace prostřednictvím skupin v nárocích groups hledat nárok role správce a rozhodnout, která ID skupin by měla mít povoleny funkce správce.

Ověřte a používejte role ve vašem kódu

Když pro aplikaci definujete role aplikací, je vaší zodpovědností implementovat autorizační logiku pro tyto role. Informace o implementaci logiky autorizace v aplikacích najdete v tématu Implementace řízení přístupu na základě role v aplikacích.

Další kroky