Konfigurowanie oświadczeń grup i ról aplikacji w tokenach

Konfigurowanie oświadczeń grup i ról aplikacji w tokenach pokazuje, jak skonfigurować aplikacje przy użyciu definicji ról aplikacji i przypisać grupy zabezpieczeń do ról aplikacji, aby zwiększyć elastyczność i kontrolę przy jednoczesnym zwiększeniu zabezpieczeń aplikacji z najniższymi uprawnieniami.

Identyfikator entra firmy Microsoft obsługuje wysyłanie przypisanych grup zabezpieczeń użytkownika, ról katalogu Firmy Microsoft Entra i grup dystrybucyjnych jako oświadczeń w tokenie. Tego podejścia można użyć do kierowania autoryzacją w aplikacjach. Jednak identyfikator Entra firmy Microsoft ogranicza obsługę grup zabezpieczeń w tokenie według rozmiaru tokenu. Jeśli użytkownik jest członkiem zbyt wielu grup, nie będzie żadnych grup zabezpieczeń w tokenie.

W tym artykule poznasz alternatywne podejście do uzyskiwania informacji o użytkowniku w tokenach przy użyciu obsługi grup zabezpieczeń Firmy Microsoft Entra. Zamiast tego skonfigurujesz aplikacje przy użyciu definicji ról aplikacji i przypiszesz grupy zabezpieczeń do ról aplikacji. To najlepsze rozwiązanie dla deweloperów Zero Trust poprawi elastyczność i kontrolę przy jednoczesnym zwiększeniu zabezpieczeń aplikacji z najniższymi uprawnieniami.

Oświadczenia grup można skonfigurować w tokenach, których można używać w aplikacjach do autoryzacji. Pamiętaj, że informacje o grupie w tokenie są aktualne tylko wtedy, gdy otrzymasz token. Oświadczenia grupy obsługują dwa główne wzorce:

  • Grupy zidentyfikowane przez atrybut identyfikatora obiektu Entra firmy Microsoft (OID).
  • Grupy zidentyfikowane przez sAMAccountName atrybut lub GroupSID dla grup i użytkowników synchronizowanych z usługą Active Directory.

Członkostwo w grupie może prowadzić do podejmowania decyzji dotyczących autoryzacji. Na przykład w poniższym przykładzie przedstawiono niektóre oświadczenia w tokenie. Możesz dodać oświadczenia i role grupy do identyfikatorów lub tokenów dostępu.

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

Tablica groups oświadczeń składa się z identyfikatorów grup, do których należy ten użytkownik. Tablica wids składa się z identyfikatorów ról firmy Microsoft przypisanych do tego użytkownika. W tym miejscu pokazano, cf1c38e5-3621-4004-a7cb-879624dced7c że przypisane role tego użytkownika obejmują dewelopera aplikacji i standardowego członka zgodnie 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0 z wskazaniami.

Aplikacja może podejmować decyzje dotyczące autoryzacji na podstawie obecności lub braku tych oświadczeń i ich wartości. Zobacz Wbudowane role firmy Microsoft Entra, aby uzyskać listę wartości dla wids oświadczenia.

Aby dodać groups oświadczenia i wids do tokenów, wybierz pozycję Wszystkie grupy, jak pokazano w poniższym przykładzie ekranu konfiguracji | Rejestracje aplikacji | Token Opcjonalne oświadczenia Edytowanie oświadczeń | grup.

Zrzut ekranu przedstawiający ekran Edytowanie oświadczeń grup przedstawiający wybrane typy grup: grupy przypisane do aplikacji.

Nadwyżki grupowe

Jeśli zażądasz wszystkich grup w tokenie, jak pokazano w powyższym przykładzie, nie można polegać na tokenie mającym groups oświadczenie w tokenie. Istnieją limity rozmiaru tokenów i groups oświadczeń, aby nie stały się zbyt duże. Gdy użytkownik jest członkiem zbyt wielu grup, aplikacja będzie musiała uzyskać członkostwo w grupie użytkownika z programu Microsoft Graph. Limity dla grup w oświadczeniu groups są następujące:

  • 200 grup dla tokenów JWT.
  • 150 grup dla tokenów SAML.
  • Sześć grup podczas korzystania z niejawnego przepływu (na przykład przy użyciu ASP.NET rdzenia, który pobiera tokeny identyfikatorów za pośrednictwem niejawnej części przepływu hybrydowego).
    • Przepływ niejawny nie jest już zalecany w przypadku aplikacji internetowych jednostronicowych.
    • Niejawny przepływ może być używany w aplikacjach internetowych tylko dla tokenu identyfikatora, nigdy tokenu dostępu, w przepływie hybrydowym OAuth2.

Jeśli używasz Połączenie OpenID lub OAuth2, w tokenie może być maksymalnie 200 grup. Jeśli używasz protokołu SAML, możesz mieć tylko 150 grup, ponieważ tokeny SAML są większe niż tokeny OAuth2 i OpenID Połączenie tokeny. Jeśli używasz przepływu niejawnego, limit wynosi sześć, ponieważ te odpowiedzi są wyświetlane w adresie URL. We wszystkich tych przypadkach zamiast oświadczenia groups zobaczysz wskazanie (znane jako nadwyżka grupy), które informuje, że użytkownik jest członkiem zbyt wielu grup, aby zmieścić się w tokenie.

W poniższym przykładzie tokenu dla protokołu OpenID connect lub OAuth2 token internetowy JSON (JWT) nie będzie groups oświadczenia, jeśli użytkownik jest członkiem zbyt wielu grup. Zamiast tego będzie istnieć _claim_names oświadczenie zawierające groups element członkowski tablicy.

Zrzut ekranu przedstawiający przykładowy token przedstawiający zapytanie usługi Azure AD Graph.

W powyższym przykładzie tokenu widać, że groups oświadczenie ma być mapowane na src1. Teoretycznie szukasz _claim_sources roszczenia, a następnie znajdź src1 członka. W tym miejscu znajdziesz zapytanie programu Graph, którego chcesz użyć do uzyskania członkostwa w grupie. Jednak występuje problem z tym, co widzisz w przykładowym zapytaniu programu Graph. Przechodzi on do programu Azure AD Graph (który firma Microsoft jest przestarzała), więc nie używaj go.

Niejawne wskazanie nadwyżki przepływu odbywa się z oświadczeniem hasgroups zamiast groups oświadczenia.

Aby zapewnić właściwą autoryzację przy użyciu członkostwa w grupie, upewnij się, że aplikacja jest sprawdzana pod kątem groups oświadczenia. Jeśli istnieje, użyj tego oświadczenia, aby określić członkostwo użytkownika w grupie. Jeśli nie ma groups oświadczenia, sprawdź istnienie hasgroups oświadczenia lub _claim_names oświadczenia z groups członkiem tablicy. Jeśli istnieją jeden z tych oświadczeń, użytkownik jest członkiem zbyt wielu grup tokenu. W takim przypadku aplikacja musi używać programu Microsoft Graph, aby określić członkostwo w grupie dla użytkownika. Zobacz Wyświetlanie listy członkostw użytkownika (bezpośrednie i przechodnie), aby znaleźć wszystkie grupy, zarówno bezpośrednie, jak i przechodnie, których użytkownik jest członkiem.

Jeśli aplikacja wymaga informacji o członkostwie w grupach w czasie rzeczywistym, użyj programu Microsoft Graph, aby określić członkostwo w grupie. Pamiętaj, że informacje w otrzymanych tokenach są aktualne tylko w momencie wywoływania programu Microsoft Graph.

Zobacz poniższy przykład ekranu konfiguracji | Rejestracje aplikacji | Token Opcjonalne oświadczenia Edytowanie oświadczeń | grup. Jednym ze sposobów uniknięcia trafienia oświadczenia nadwyżkowego grupy jest wybranie grup przypisanych do aplikacji na ekranie oświadczeń Edytowanie grup zamiast Wszystkich grup.

Zrzut ekranu Edytowanie oświadczeń grupy przedstawia wybrane typy grup: Grupy zabezpieczeń, Role katalogu i Wszystkie grupy.

Po wybraniu pozycji Grupy przypisane do aplikacji grupa zostanie uwzględniona w oświadczeniu groups , jeśli spełnione są następujące warunki:

W publikacji tego artykułu opcja Grupy przypisane do aplikacji nie obsługuje członkostwa pośredniego. Przypisanie grupy wymaga co najmniej licencji na poziomie P1. Bezpłatna dzierżawa nie może przypisywać grup do aplikacji.

Grupy i role aplikacji

Innym sposobem uniknięcia problemu z nadmierną grupą jest zdefiniowanie ról aplikacji, które zezwalają użytkownikom i grupom na typy członków. Jak pokazano w poniższym przykładzie ekranu Rejestracje aplikacji | Role | aplikacji Tworzenie roli aplikacji, wybierz pozycję Użytkownicy/grupy dla dozwolonych typów elementów członkowskich.

Zrzut ekranu tworzenie roli aplikacji przedstawia dozwolone typy elementów członkowskich: Użytkownicy/grupy.

Po utworzeniu roli aplikacji w rejestracji aplikacji specjalista IT może przypisać użytkowników i grupy do roli. Aplikacja otrzyma roles oświadczenie w tokenie (token identyfikatora aplikacji, token dostępu dla interfejsów API) ze wszystkimi przypisanymi rolami zalogowanego użytkownika, jak pokazano w poniższym przykładzie tokenu.

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

Pamiętaj, aby aplikacja obsługiwała następujące warunki:

  • roles brak roszczenia
  • użytkownik nie został przypisany do żadnej roli
  • wiele wartości w oświadczeniu roles , gdy użytkownik ma wiele przypisanych ról

Podczas tworzenia ról aplikacji, które zezwalają użytkownikom i grupom jako członkom, zawsze należy zdefiniować rolę użytkownika odniesienia bez ról autoryzacji z podwyższonym poziomem uprawnień. Jeśli konfiguracja aplikacji dla przedsiębiorstw wymaga przypisania, tylko użytkownicy z bezpośrednim przypisaniem do aplikacji lub członkostwa w grupie przypisanej do aplikacji mogą używać aplikacji.

Jeśli aplikacja ma zdefiniowane role aplikacji, które zezwalają użytkownikom i grupom jako członkom, po przypisaniu użytkownika lub grupy do aplikacji jedna z zdefiniowanych ról aplikacji musi być częścią przypisania użytkownika lub grupy do aplikacji. Jeśli aplikacja zdefiniowała tylko role z podwyższonym poziomem uprawnień (np admin. ) dla aplikacji, wszyscy użytkownicy i grupy zostaną przypisani do roli administratora. Podczas definiowania roli podstawowej (takiej jak user), użytkownicy i grupy przypisane do aplikacji mogą mieć przypisaną podstawową rolę użytkownika.

Oprócz unikania oświadczeń nadwyżkowych grup, kolejną zaletą korzystania z ról nie jest potrzeba mapowania między identyfikatorem grupy lub nazwą i tym, co oznacza w aplikacji. Na przykład kod może wyszukać oświadczenie roli administratora zamiast iterować za pośrednictwem grup w groups oświadczeniach i decydować, które identyfikatory grup powinny być dozwolone przez funkcję administratora.

Weryfikowanie i używanie ról w kodzie

Podczas definiowania ról aplikacji dla aplikacji obowiązkiem jest zaimplementowanie logiki autoryzacji dla tych ról. Zobacz Implementowanie kontroli dostępu opartej na rolach w aplikacjach , aby dowiedzieć się, jak zaimplementować logikę autoryzacji w aplikacjach.

Następne kroki