Konfigurowanie oświadczeń grup i ról aplikacji w tokenach
Ten artykuł ułatwia konfigurowanie aplikacji przy użyciu definicji ról aplikacji i przypisywanie grup zabezpieczeń do ról aplikacji, dzięki czemu można zwiększyć elastyczność i kontrolę przy jednoczesnym zwiększeniu zabezpieczeń aplikacji o najniższych uprawnieniach.
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 obsługa grup identyfikatorów Entra firmy Microsoft w tokenie jest ograniczona przez rozmiar tokenu. Gdy użytkownik jest członkiem zbyt wielu grup, nie ma żadnych grup w tokenie.
W tym artykule przedstawiono alternatywne podejście do uzyskiwania informacji o użytkowniku w tokenach przy użyciu obsługi grup Firmy Microsoft Entra. Zamiast tego skonfigurujesz aplikacje przy użyciu definicji ról aplikacji i przypiszesz grupy do ról aplikacji. To najlepsze rozwiązanie dla deweloperów Zero Trust zwiększa elastyczność i kontrolę przy jednoczesnym zwiększeniu bezpieczeństwa 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 lubGroupSID
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.
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 musi 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 internetowych JSON (JWT).
- 150 grup tokenów języka SAML (Security Assertion Markup Language).
- 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 groups
ma oświadczenia, jeśli użytkownik jest członkiem zbyt wielu grup. Zamiast tego istnieje _claim_names
oświadczenie, które zawiera groups
element członkowski tablicy.
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 otrzymanego tokenu są aktualne tylko w momencie uzyskania tokenu.
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.
Po wybraniu pozycji Grupy przypisane do aplikacji grupa zostanie uwzględniona w oświadczeniu groups
, jeśli spełnione są następujące warunki:
- grupa jest przypisana do aplikacji dla przedsiębiorstw
- użytkownik jest bezpośrednim członkiem grupy
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.
Po utworzeniu roli aplikacji w rejestracji aplikacji specjalista IT może przypisać użytkowników i grupy do roli. Aplikacja pobiera 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 ma przypisania roli
- wiele wartości w oświadczeniu
roles
, gdy użytkownik ma więcej niż jedno przypisanie roli
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
- Dostosowywanie tokenów opisuje informacje, które można otrzymywać w tokenach firmy Microsoft Entra. Wyjaśniono w nim, jak dostosować tokeny w celu zwiększenia elastyczności i kontroli przy jednoczesnym zwiększeniu poziomu zabezpieczeń zerowego zaufania aplikacji z najmniejszymi uprawnieniami.
- Konfigurowanie oświadczeń grup dla aplikacji przy użyciu identyfikatora Entra firmy Microsoft pokazuje, jak identyfikator Entra firmy Microsoft może dostarczyć informacje o członkostwie w grupach użytkownika w tokenach do użycia w aplikacjach.
- Najlepsze rozwiązania dotyczące zabezpieczeń właściwości aplikacji opisują identyfikator URI przekierowania, tokeny dostępu (używane w przypadku przepływów niejawnych), certyfikaty i wpisy tajne, identyfikator URI identyfikatora aplikacji i własność aplikacji.
- Platforma tożsamości Microsoft zakresy, uprawnienia i zgoda wyjaśnia podstawowe pojęcia dotyczące dostępu i autoryzacji, które ułatwiają tworzenie bezpieczniejszych i godnych zaufania aplikacji.
- Użyj najlepszych rozwiązań dotyczących tworzenia tożsamości zero trust i zarządzania dostępem w cyklu tworzenia aplikacji, aby utworzyć bezpieczne aplikacje.