Belirteçlerde grup taleplerini ve uygulama rollerini yapılandırma

Belirteçlerde grup taleplerini ve uygulama rollerini yapılandırma, uygulama rol tanımlarıyla uygulamalarınızı yapılandırmayı ve uygulama rollerine güvenlik grupları atamayı gösterir; böylece uygulama güvenliğini en az ayrıcalıkla artırırken esnekliği ve denetimi geliştirebilirsiniz.

Microsoft Entra Id, kullanıcının atanmış güvenlik gruplarını, Microsoft Entra dizin rollerini ve dağıtım gruplarını belirteçte talep olarak göndermeyi destekler. Uygulamalarda yetkilendirmeyi yönlendirmek için bu yaklaşımı kullanabilirsiniz. Ancak Microsoft Entra ID, belirteçteki güvenlik grubu desteğini belirtecin boyutuna göre sınırlar. Kullanıcı çok fazla grubun üyesiyse, belirteçte güvenlik grubu olmaz.

Bu makalede, Microsoft Entra güvenlik grubu desteğini kullanarak belirteçlerde kullanıcı bilgilerini almaya yönelik alternatif bir yaklaşım öğreneceksiniz. Bunun yerine, uygulama rol tanımlarıyla uygulamalarınızı yapılandıracak ve uygulama rollerine güvenlik grupları atayacaksınız. Bu Sıfır Güven geliştirici en iyi uygulaması, esnekliği ve denetimi geliştirirken uygulama güvenliğini en az ayrıcalıkla artırır.

Yetkilendirme için uygulamalarınızda kullanabileceğiniz belirteçlerde grup taleplerini yapılandırabilirsiniz. Belirteçteki grup bilgilerinin yalnızca belirteci aldığınızda geçerli olduğunu unutmayın. Grup talepleri iki ana deseni destekler:

  • Microsoft Entra nesne tanımlayıcısı (OID) özniteliğiyle tanımlanan gruplar.
  • Active Directory ile eşitlenen gruplar ve kullanıcılar için veya GroupSID özniteliği tarafından sAMAccountName tanımlanan gruplar.

Grup üyeliği yetkilendirme kararlarını yönlendirebilir. Örneğin, aşağıdaki örnekte belirteçteki bazı talepler gösterilmektedir. Kimlik veya erişim belirteçlerine grup talepleri ve roller ekleyebilirsiniz.

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

Talep dizisi, groups bu kullanıcının üye olduğu grupların kimliklerini içerir. Dizi, wids bu kullanıcıya atanan Microsoft Entra rollerinin kimliklerini içerir. Burada, cf1c38e5-3621-4004-a7cb-879624dced7c bu kullanıcının atanan rollerinin uygulama geliştiricisi ve standart üye olduğunu 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0 gösterir.

Uygulamanız, bu taleplerin varlığı veya yokluğuna ve bunların değerlerine göre yetkilendirme kararları verebilir. Talebin değerlerinin listesi için bkz. Microsoft Entra yerleşik rolleri.wids

ve taleplerini belirteçlerinize eklemek groups için, Uygulama kayıtları | Token yapılandırması | İsteğe bağlı talepler | Grupları düzenle talep ekranının aşağıdaki örneğinde gösterildiği gibi Tüm gruplar'ı seçin.wids

Seçili grup türlerini gösteren Grup taleplerini düzenle ekranının ekran görüntüsü: Uygulamaya atanan gruplar.

Fazla kullanımları gruplandırma

Yukarıdaki örnekte gösterildiği gibi belirtecinizde tüm grupları istediğinizde, belirtecin belirtecinizde talebin bulunmasına groups güvenemezsiniz. Belirteçlerde ve taleplerde groups boyut sınırları vardır, böylece çok büyük olmazlar. Kullanıcı çok fazla grubun üyesi olduğunda, uygulamanızın kullanıcının grup üyeliğini Microsoft Graph'ten alması gerekir. Talepteki groups grupların sınırları şunlardır:

  • JWT belirteçleri için 200 grup.
  • SAML belirteçleri için 150 grup.
  • Örtük akışı kullanırken altı grup (örneğin, karma akışın örtük akış bölümü aracılığıyla kimlik belirteçlerini alan ASP.NET çekirdeği kullanma).
    • Tek sayfalı web uygulamaları için artık örtük akış önerilmez.
    • Örtük akış, OAuth2 karma akışında yalnızca kimlik belirteci için web uygulamalarında kullanılabilir, erişim belirtecinde kullanılamaz.

OpenID Bağlan veya OAuth2 kullanıyorsanız belirtecinizde en fazla 200 grup olabilir. SAML kullanıyorsanız, SAML belirteçleri OAuth2 ve OpenID Bağlan belirteçlerinden daha büyük olduğundan yalnızca 150 grubunuz olabilir. Örtük akışı kullanıyorsanız, bu yanıtlar URL'de göründüğünden sınır altıdır. Tüm bu durumlarda, talep groups sahibi olmak yerine, kullanıcının belirtecinize sığamayacak kadar çok grubun üyesi olduğunu belirten bir gösterge (grup fazla kullanım olarak bilinir) görürsünüz.

Aşağıdaki belirteç örneğinde, OpenID bağlantısı veya OAuth2, JSON web belirteci (JWT) için kullanıcı çok fazla grubun üyesiyse bir talep olmaz groups . Bunun yerine, dizinin bir _claim_names üyesini içeren bir groups talep olacaktır.

Azure AD Graph sorgusunu gösteren örnek belirtecin ekran görüntüsü.

Yukarıdaki belirteç örneğinde, talebin groups ile eşlenmesi src1gerektiğini görürsünüz. Teoride, talebi arar ve üyeyi _claim_sourcessrc1 bulursunuz. Buradan, grup üyeliğini almak için kullanacağınız Graph sorgusunu bulursunuz. Ancak, örnek Graph sorgusunda gördüklerinizle ilgili bir sorun vardır. Azure AD Graph'a (Microsoft'un kullanım dışı bırakıldığı) gider, bu nedenle kullanmayın.

Örtük akış fazla kullanım göstergesi, talep yerine groups bir hasgroups taleple yapılır.

Grup üyeliğini kullanarak doğru yetkilendirmeyi sağlamak için uygulamanızın talebi denetlemesini groups sağlayın. Varsa, kullanıcının grup üyeliğini belirlemek için bu talebi kullanın. Talep yoksa groups , bir hasgroups talebin veya dizinin üyesi olan bir _claim_namesgroups talebin varlığını denetleyin. Bu taleplerden biri varsa, kullanıcı belirteç için çok fazla grubun üyesidir. Bu durumda, uygulamanızın kullanıcının grup üyeliğini belirlemek için Microsoft Graph kullanması gerekir. Kullanıcının üyesi olduğu doğrudan ve geçişli tüm grupları bulmak için bkz . Kullanıcının üyeliklerini listeleme (doğrudan ve geçişli ).

Uygulamanız gerçek zamanlı grup üyeliği bilgileri gerektiriyorsa, grup üyeliğini belirlemek için Microsoft Graph'ı kullanın. Aldığınız belirteçteki bilgilerin yalnızca Microsoft Graph'i çağırdığınızda güncel olduğunu unutmayın.

Uygulama kayıtları | Token yapılandırması | İsteğe bağlı talepler | Grupları düzenle talep ekranının aşağıdaki örneğine bakın. Bir grup fazla kullanım talebine çarpmaktan kaçınmanın bir yolu, Grupları düzenle talep ekranında Tüm gruplar yerine Uygulamayaatanan gruplar'ı seçmektir.

Grup taleplerini düzenle ekranının ekran görüntüsü seçili grup türlerini gösterir: Güvenlik grupları, Dizin rolleri ve Tüm gruplar.

Uygulamaya atanan gruplar'ı seçtiğinizde, aşağıdaki koşullar doğruysa talepte groups bir grup yer alır:

  • grup Enterprise App'e atanır
  • kullanıcı, grubun doğrudan bir üyesidir

Bu makalenin yayımlanması itibariyle , uygulamaya atanan Gruplar seçeneği dolaylı üyeliği desteklemez. Grup ataması için en az P1 düzeyinde lisans gerekir. Ücretsiz kiracı, bir uygulamaya grup atayamaz.

Gruplar ve uygulama rolleri

Grup fazla kullanım sorununu önlemenin bir diğer yolu da uygulamanın kullanıcılara ve gruplara üye türü olarak izin veren uygulama rollerini tanımlamasıdır. Uygulama kayıtları | Uygulama rolleri Uygulama rolü | oluştur ekranının aşağıdaki örneğinde gösterildiği gibi İzin verilen üye türleri için Kullanıcılar/Gruplar'ı seçin.

Uygulama rolü oluştur ekranının ekran görüntüsü, İzin verilen üye türleri: Kullanıcılar/Gruplar'ın gösterildiğini gösterir.

Bt Uzmanları, uygulamanın kaydında uygulama rolünü oluşturduktan sonra role kullanıcı ve grup atayabilir. Uygulamanız, aşağıdaki belirteç örneğinde gösterildiği gibi oturum açmış kullanıcının atanmış tüm rolleriyle belirtecinizde bir roles talep alır (uygulama için kimlik belirteci, API'ler için erişim belirteci).

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

Uygulamanızın aşağıdaki koşulları işlemesini sağlamayı unutmayın:

  • roles talep yokluğu
  • kullanıcı herhangi bir role atanmadı
  • kullanıcının atanmış birden çok rolü olduğunda talepte roles birden çok değer

Kullanıcıya ve gruplara üye olarak izin veren uygulama rolleri oluşturduğunuzda, her zaman yükseltilmiş yetkilendirme rolleri olmayan bir temel kullanıcı rolü tanımlayın. Kurumsal Uygulama yapılandırması için atama gerektiğinde, yalnızca uygulamaya doğrudan ataması olan veya uygulamaya atanmış bir gruptaki üye olan kullanıcılar uygulamayı kullanabilir.

Uygulamanızda kullanıcılara ve gruplara üye olarak izin veren tanımlı uygulama rolleri varsa, uygulamaya bir kullanıcı veya grup atandığında, tanımlanan uygulama rollerinden birinin kullanıcının veya grubun uygulamaya atamasının bir parçası olması gerekir. Uygulamanız yalnızca uygulama için yükseltilmiş roller (örneğin admin) tanımladıysa, tüm kullanıcılara ve gruplara yönetici rolü atanır. Bir temel rol tanımladığınızda (örneğin user), uygulamaya atanan kullanıcılara ve gruplara temel kullanıcı rolü atanabilir.

Grup fazla kullanım taleplerini önlemeye ek olarak, rolleri kullanmanın bir diğer avantajı da bir grup kimliği veya adı ile uygulamanızdaki anlamı arasında eşleme yapmak zorunda kalmamaktır. Örneğin kodunuz, taleplerdeki groups gruplar arasında yineleme yapıp yönetici işlevselliğine izin verilmesi gereken grup kimliklerine karar vermek yerine yönetici rolü talebi arayabilir.

Kodunuzda rolleri doğrulama ve kullanma

Uygulamanız için uygulama rolleri tanımladığınızda, bu roller için yetkilendirme mantığı uygulamak sizin sorumluluğunuzdadır. Uygulamalarınızda yetkilendirme mantığını nasıl uygulayabileceğinizi öğrenmek için bkz . Uygulamalarda rol tabanlı erişim denetimi uygulama.

Sonraki adımlar

  • Belirteçleri özelleştirmek, Microsoft Entra belirteçlerinde alabileceğiniz bilgileri ve en az ayrıcalıkla uygulama sıfır güven güvenliğini artırırken esnekliği ve denetimi geliştirmek için belirteçleri özelleştirmeyi açıklar.
  • Microsoft Entra Id kullanarak uygulamalar için grup taleplerini yapılandırma, Microsoft Entra Id'nin uygulamalar içinde kullanılmak üzere belirteçlerde kullanıcının grup üyeliği bilgilerini nasıl sağlayabileceğini gösterir.
  • Uygulama özellikleri için en iyi güvenlik yöntemleri yeniden yönlendirme URI'sini, erişim belirteçlerini (örtük akışlar için kullanılır), sertifikaları ve gizli dizileri, uygulama kimliği URI'sini ve uygulama sahipliğini açıklar.
  • Microsoft kimlik platformu kapsamları, izinleri ve onayı, daha güvenli ve güvenilir uygulamalar oluşturmanıza yardımcı olmak için temel erişim ve yetkilendirme kavramlarını açıklar.
  • Güvenli uygulamalar oluşturmak için uygulama geliştirme yaşam döngünüzde Sıfır Güven kimlik ve erişim yönetimi geliştirme en iyi yöntemlerini kullanın.