Kimlik Modeliyle Beyanlar ve Yetkilendirmeyi Yönetme

Yetkilendirme, hangi varlıkların bir bilgisayar kaynağını değiştirme, görüntüleme veya başka bir şekilde erişme iznine sahip olduğunu belirleme işlemidir. Örneğin, bir işletmede yalnızca yöneticilerin çalışanlarının dosyalarına erişmesine izin verilebilir. Windows Communication Foundation (WCF), yetkilendirme işlemi gerçekleştirmek için iki mekanizmayı destekler. İlk mekanizma, mevcut ortak dil çalışma zamanı (CLR) yapılarını kullanarak yetkilendirmeyi denetlemenizi sağlar. İkincisi, Kimlik Modeli olarak bilinen talep tabanlı bir modeldir. WCF, gelen iletilerden talep oluşturmak için Kimlik Modeli'ni kullanır; Kimlik Modeli sınıfları, özel yetkilendirme düzenleri için yeni talep türlerini destekleyecek şekilde genişletilebilir. Bu konu başlığı altında, Kimlik Modeli özelliğinin ana programlama kavramlarına genel bir bakış ve özelliğin kullandığı en önemli sınıfların listesi sunulmaktadır.

Kimlik Modeli Senaryoları

Aşağıdaki senaryolar Kimlik Modeli kullanımını temsil eder.

Senaryo 1: Kimlik, Rol ve Grup Taleplerini Destekleme

Kullanıcılar bir Web hizmetine ileti gönderir. Web hizmetinin erişim denetimi gereksinimleri kimlik, rol veya grupları kullanır. İletiyi gönderen bir dizi rol veya grupla eşlenir. Rol veya grup bilgileri erişim denetimleri gerçekleştirmek için kullanılır.

Senaryo 2: Zengin Talepleri Destekleme

Kullanıcılar bir Web hizmetine ileti gönderir. Web hizmetinin erişim denetimi gereksinimleri kimlik, rol veya gruplardan daha zengin bir model gerektirir. Web hizmeti, belirli bir kullanıcının zengin talep tabanlı modeli kullanarak belirli bir korumalı kaynağa erişimi olup olmadığını belirler. Örneğin, bir kullanıcı diğer kullanıcıların erişemediği maaş bilgileri gibi belirli bilgileri okuyabilir.

Senaryo 3: Ayrı Beyanları Eşleme

Kullanıcı bir Web hizmetine ileti gönderir. Kullanıcı kimlik bilgilerini çeşitli yollarla belirtebilir: X.509 sertifikası, kullanıcı adı belirteci veya Kerberos belirteci. Web hizmeti, kullanıcı kimlik bilgisi türünden bağımsız olarak erişim denetimi denetimlerini aynı şekilde gerçekleştirmek için gereklidir. Zaman içinde ek kimlik bilgileri türleri destekleniyorsa, sistem buna göre geliştirilmelidir.

Senaryo 4: Birden Çok Kaynağa Erişimi Belirleme

Web hizmeti birden çok kaynağa erişmeye çalışır. Hizmet, kullanıcıyla ilişkili talepleri kaynağa erişmek için gereken taleplerle karşılaştırarak belirli bir kullanıcının hangi korumalı kaynaklara erişimi olduğunu belirler.

Kimlik Modeli Terimleri

Aşağıdaki liste, Kimlik Modeli kavramlarını açıklamak için kullanılan temel terimleri tanımlar.

Yetkilendirme ilkesi
Giriş talepleri kümesini bir çıkış talepleri kümesine eşlemek için bir kural kümesi. Yetkilendirme ilkesinin değerlendirilmesi, talep kümelerinin bir değerlendirme bağlamı ve ardından bir yetkilendirme bağlamı eklenmesine neden olur.

Yetkilendirme bağlamı
Talep kümeleri kümesi ve sıfır veya daha fazla özellik. Bir veya daha fazla yetkilendirme ilkesi değerlendirmenin sonucu.

Talep
Talep türü, sağ ve değer birleşimi.

Talep kümesi
Belirli bir veren tarafından verilen talep kümesi.

Talep türü
Bir tür talep. Kimlik Modeli API'si tarafından tanımlanan talepler sınıfının özellikleridir ClaimType . Sistem tarafından sağlanan talep türlerine örnek olarak Dns, , HashEmail, , Name, Rsa, , Sid, ThumbprintUriSpnSystemve X500DistinguishedNameverilebilir.

Değerlendirme bağlamı
Yetkilendirme ilkesinin değerlendirildiği bağlam. Özellikleri ve talep kümelerini içerir. Değerlendirme tamamlandıktan sonra yetkilendirme bağlamının temeli haline gelir.

Kimlik talebi
Hakkı kimlik olan bir talep.

Sertifikayı veren
En az bir kimlik talebi içeren ve başka bir talep kümesi yayımlamış olduğu kabul edilen bir talep kümesi.

Properties
Değerlendirme bağlamı veya yetkilendirme bağlamı ile ilişkili bir bilgi kümesi.

Korumalı kaynak
Sistemde yalnızca belirli gereksinimler ilk karşılandığında kullanılabilecek, erişilebilen veya başka bir şekilde değiştirilebilen bir şey.

Right
Bir kaynak üzerindeki bir özellik. Kimlik Modeli API'sinin tanımladığı haklar sınıfının özellikleridir Rights . Sistem tarafından sağlanan haklara örnek olarak ve PossessPropertyverilebilirIdentity.

Değer
Hak talep edilen bir şey.

Talepler

Kimlik Modeli, talep tabanlı bir sistemdir. Talepler, sistemdeki bir varlıkla (genellikle o sistemin kullanıcısı) ilişkili özellikleri açıklar. Belirli bir varlıkla ilişkili talep kümesi anahtar olarak düşünülebilir. Belirli talepler, bu anahtarın şeklini, bir kapıda kilit açmak için kullanılan fiziksel anahtara benzer şekilde tanımlar. Talepler kaynaklara erişim kazanmak için kullanılır. Belirli bir korumalı kaynağa erişim, bu kaynağa erişmek için gereken talepler, erişim girişiminde bulunan varlıkla ilişkili taleplerle karşılaştırılarak belirlenir.

Talep, belirli bir değere göre bir hakkın ifadesidir. Bir sağ "Okuma", "Yazma" veya "Yürüt" gibi bir şey olabilir. Değer veritabanı, dosya, posta kutusu veya özellik olabilir. Talepler de bir talep türüne sahiptir. Talep türü ve sağ birleşimi, değere göre özellikleri belirtme mekanizmasını sağlar. Örneğin, "Biography.doc" değeri üzerinde sağ "Okuma" olan "Dosya" türünde bir talep, böyle bir talebin ilişkilendirildiği varlığın dosya Biography.doc okuma erişimine sahip olduğunu gösterir. "Martin" değeri üzerinde sağ "PossessProperty" olan "Name" türünde bir talep, böyle bir talebin ilişkilendirildiği varlığın "Martin" değerine sahip bir Name özelliğine sahip olduğunu gösterir.

Çeşitli talep türleri ve hakları Kimlik Modeli'nin bir parçası olarak tanımlansa da, sistem genişletilebilir ve kimlik modeli altyapısının üzerine inşa edilmiş çeşitli sistemlerin gerektiğinde ek talep türleri ve hakları tanımlamasına olanak tanır.

Kimlik Talepleri

Belirli bir hak, kimliğin hakkıdır. Bu haklara sahip olan talepler, varlığın kimliği hakkında bir bildirimde bulunur. Örneğin, değeri someone@example.com ve hakkı Identity olan "kullanıcı asıl adı" (UPN) türünde bir talep, belirli bir etki alanındaki belirli bir kimliği gösterir.

Sistem Kimliği Talebi

Kimlik Modeli bir kimlik talebi tanımlar: System. System Kimlik talebi, bir varlığın geçerli uygulama veya sistem olduğunu gösterir.

Talep Kümeleri

Kimliği temsil eden talep modeli önemlidir çünkü talepler, sonuçta bir "benlik" kavramı olsa bile, talepler her zaman sistemdeki bir varlık tarafından verilir. Talepler bir küme olarak gruplandırılır ve her kümenin bir vereni vardır. Veren yalnızca bir talep kümesidir. Böyle özyinelemeli bir ilişkinin sonunda sona ermesi gerekir ve herhangi bir talep kümesi kendi vereni olabilir.

Aşağıdaki şekilde, bir talep kümesinin, veren olarak başka bir talep kümesine sahip olduğu ve bunun sonucunda sistem talebi veren olarak ayarlanmış olan üç talep kümesi örneği gösterilmektedir. Bu nedenle, talep kümeleri rastgele derin olabilecek bir hiyerarşi oluşturur.

Sets of claims within the hierarchy.

Aşağıdaki şekilde gösterildiği gibi, birden çok talep kümesi aynı veren talep kümesine sahip olabilir:

Multiple sets of claims with the same issuing claim set.

Kendi vereni olan bir talep kümesi dışında, Kimlik Modeli bir döngü oluşturmak için talep kümeleri için herhangi bir destek sağlamaz. Bu nedenle, A talep kümesinin, kendisi de A talep kümesi tarafından verilen B talep kümesi tarafından verildiği bir durum asla ortaya çıkmaz. Ayrıca Kimlik Modeli, birden çok verene sahip olmak için talep kümeleri için herhangi bir destek sağlamaz. İki veya daha fazla verenin belirli bir talep kümesi vermesi gerekiyorsa, her biri aynı talepleri içeren ancak farklı verenlere sahip olan birden çok talep kümesi kullanmanız gerekir.

Taleplerin Kaynağı

Talepler çeşitli kaynaklardan gelebilir. Yaygın talep kaynaklarından biri, örneğin bir Web hizmetine gönderilen iletinin bir parçası olarak bir kullanıcı tarafından sunulan kimlik bilgileridir. Sistem bu tür talepleri doğrular ve kullanıcıyla ilişkili bir talep kümesinin parçası haline gelir. Diğer sistem bileşenleri, işletim sistemi, ağ yığını, çalışma zamanı ortamı veya uygulama dahil ancak bunlarla sınırlı olmamak üzere talep kaynakları da olabilir. Ayrıca, uzak hizmetler de talep kaynağı olabilir.

Yetkilendirme İlkeleri

Kimlik Modeli'nde talepler, yetkilendirme ilkesini değerlendirme sürecinin bir parçası olarak oluşturulur. Yetkilendirme ilkesi var olan taleplerin (büyük olasılıkla boş) kümesini inceler ve mevcut taleplere ve kullanımda olan ek bilgilere göre ek talepler eklemeyi seçebilir. Bu, talepler arasında eşlemenin temelini sağlar. Sistemde taleplerin varlığı veya yokluğu, ek talep ekleyip eklemediği konusunda yetkilendirme ilkesinin davranışını etkiler.

Örneğin yetkilendirme ilkesinin, sistemi kullanan çeşitli varlıkların doğum tarihini içeren bir veritabanına erişimi vardır. Yetkilendirme ilkesi bu bilgileri kullanarak bağlama "18'den fazla" talebi ekler. Bu 18 yaş üstü talebin, 18 yaşından büyük olması dışında varlıkla ilgili hiçbir bilgiyi açıklamadığını unutmayın. 'Over18' iddiasının yorumlanmasının bu talebin semantiğini anlamaya bağlı olduğunu unutmayın. Talebi ekleyen yetkilendirme ilkesi bu semantiği bir düzeyde anlar. İlke değerlendirmesi sonucunda ortaya çıkan talepleri daha sonra inceleyen kod da bu semantikler hakkında bilgilendirilir.

Belirli bir yetkilendirme ilkesi, diğer yetkilendirme ilkeleri talep eklediğinden yetkilendirme ilkesinin daha fazla talep ekleyebileceği için birden çok kez değerlendirilmesini gerektirebilir. Kimlik Modeli, yürürlükteki yetkilendirme ilkelerinden herhangi biri tarafından bağlama daha fazla talep ekleninceye kadar değerlendirmeye devam etmek üzere tasarlanmıştır. Yetkilendirme ilkelerinin sürekli değerlendirilmesi, yetkilendirme ilkelerine göre belirli bir değerlendirme sırasını zorunlu kılma gereksinimini önler; herhangi bir sırada değerlendirilebilir. Örneğin, X ilkesi yalnızca A ilkesi B Talebi eklemişse Z Talebi eklerse, önce X değerlendirilirse başlangıçta Talep Z'yi eklemez. Daha sonra, A değerlendirilir ve Talep B'yi ekler. X ikinci kez değerlendirilir ve bu kez Deste Z'yi ekler.

Belirli bir sistem, yürürlükte olan birçok yetkilendirme ilkesine sahip olabilir.

Anahtar Oluşturma Makinesi

İlişkili yetkilendirme ilkeleri grubunu değerlendirmek, anahtar oluşturan bir makine kullanmak gibidir. Yetkilendirme ilkelerinin her biri değerlendirilir ve anahtar şeklini oluşturarak talep kümeleri oluşturulur. Anahtarın şekli tamamlandıktan sonra, bazı kilitleri açmayı denemek için kullanılabilir. Anahtarın şekli, yetkilendirme yöneticisi tarafından oluşturulan "yetkilendirme bağlamında" depolanır.

Yetkilendirme Bağlamı

Yetkilendirme yöneticisi, açıklandığı gibi çeşitli yetkilendirme ilkelerini değerlendirir ve sonuç bir yetkilendirme bağlamıdır (talep kümeleri kümesi ve bazı ilişkili özellikler). Yetkilendirme bağlamı, bu bağlamda hangi taleplerin mevcut olduğunu, bu çeşitli talepler arasındaki ilişkileri (örneğin, veren talep kümesi) belirlemek ve sonuçta bunları kaynağa erişmek için karşılamaları gereken bazı gereksinimlerle karşılaştırmak için incelenebilir.

Kilitler

Yetkilendirme bağlamı (talep kümesi) bir anahtarsa, belirli bir korumalı kaynağa erişim vermek için karşılanması gereken gereksinimler anahtarın uyması gereken kilidi oluşturur. Kimlik Modeli, bu tür gereksinimlerin nasıl ifade edildiğine ilişkin resmiyet kazanmaz, ancak sistemin talep tabanlı yapısı göz önünde bulundurulduğunda, yetkilendirme bağlamındaki taleplerin bazı gerekli taleplerle karşılaştırılmasını içerir.

Özet

Kimlik Modeli, talep kavramını temel alır. Talepler kümeler halinde gruplandırılır ve yetkilendirme bağlamında toplanır. Yetkilendirme bağlamı bir talep kümesi içerir ve yetkilendirme yöneticisiyle ilişkili bir veya daha fazla yetkilendirme ilkesi değerlendirmenin sonucudur. Erişim gereksinimlerinin karşılanmış olup olmadığını belirlemek için bu talep kümeleri incelenebilir. Aşağıdaki şekilde, bu çeşitli Kimlik Modeli kavramları arasındaki ilişkiler gösterilmektedir.

Managing claims and authorization

WCF ve Kimlik Modeli

WCF, yetkilendirme gerçekleştirmek için temel olarak Kimlik Modeli altyapısını kullanır. WCF'de ServiceAuthorizationBehavior sınıfı, yetkilendirme ilkelerini bir hizmetin parçası olarak belirtmenize olanak tanır. Bu tür yetkilendirme ilkeleri dış yetkilendirme ilkeleri olarak bilinir ve yerel ilkeyi temel alarak veya uzak bir hizmetle etkileşime geçerek talep işleme gerçekleştirebilir. sınıfı tarafından ServiceAuthorizationManager temsil edilen yetkilendirme yöneticisi, çeşitli kimlik bilgisi türlerini (belirteçler) tanıyan yetkilendirme ilkeleriyle birlikte dış yetkilendirme ilkelerini değerlendirir ve yetkilendirme bağlamı olarak adlandırılan öğeleri gelen iletiye uygun taleplerle doldurur. Yetkilendirme bağlamı sınıfı tarafından AuthorizationContext temsil edilir.

Kimlik Modeli Programlama

Aşağıdaki tabloda, Kimlik Modeli uzantılarını programlamak için kullanılan nesne modeli açıklanmaktadır. Bu sınıfların System.IdentityModel.Policy tümü veya System.IdentityModel.Claims ad alanında bulunur.

Sınıf Açıklama
Yetkilendirme Bileşeni Arabirimini uygulayan IAuthorizationComponent bir Kimlik Modeli sınıfı.
IAuthorizationComponent Tek bir salt okunur dize özelliği sağlayan arabirim: Id. Bu özelliğin değeri, bu arabirimi uygulayan sistemdeki her örnek için benzersizdir.
AuthorizationContext Sıfır veya daha fazla özelliğe sahip bir örnek kümesi ClaimSet içeren yetkilendirme bileşeni; bir veya daha fazla Yetkilendirme İlkesini değerlendirmenin sonucu.
Claim Talep türü, sağ ve değerin birleşimi. Sağ ve değer bölümleri talep türüne göre kısıtlanır.
ClaimSet Soyut bir temel sınıf. Örnek koleksiyonu Claim .
DefaultClaimSet Korumalı bir sınıf. sınıfının bir uygulaması ClaimSet .
EvaluationContext Soyut bir temel sınıf. İlke değerlendirmesi sırasında yetkilendirme ilkesine geçirilir.
IAuthorizationPolicy Yetkilendirme ilkesi sınıflarından IAuthorizationComponent türetilen ve tarafından uygulanan bir arabirim.
Rights Önceden tanımlanmış doğru değerler içeren statik bir sınıf.

Aşağıdaki sınıflar Kimlik Modeli programlaması için de kullanılır, ancak veya System.IdentityModel.Claims ad alanında System.IdentityModel.Policy bulunmaz.

Sınıf Açıklama
ServiceAuthorizationManager Bir hizmetteki her işlem için talep tabanlı yetkilendirme denetimleri gerçekleştirmek için bir yöntem CheckAccessCoresağlayan sınıf. sınıfından türetmeli ve yöntemini geçersiz kılmalısınız.
ServiceAuthorizationBehavior Yetkilendirmeyle ilgili olarak hizmetin davranışıyla ilgili çeşitli özellikler sağlayan korumalı bir sınıf.
ServiceSecurityContext Şu anda çalışmakta olan (veya çalıştırılacak) işlem için yetkilendirme bağlamı da dahil olmak üzere güvenlik bağlamı sağlayan bir sınıf. Bu sınıfın bir örneği öğesinin OperationContextbir parçasıdır.

Önemli Üyeler

Aşağıdaki üyeler genellikle yeni talep türleri oluşturmak için kullanılır.

Üye Açıklama
CheckAccessCore Türetilmiş sınıflar, bir hizmette işlem çalıştırmadan önce talep tabanlı erişim denetimleri gerçekleştirmek için bu yöntemi uygular. Erişim denetimi kararı alınırken sağlanan OperationContextveya başka bir yerdeki tüm bilgiler incelenebilir. döndürürse CheckAccessCoretrue, erişim verilir ve işlemin çalışmasına izin verilir. döndürürse CheckAccessCorefalse, erişim reddedilir ve işlem çalışmaz. Örnek için bkz . Nasıl yapılır: Hizmet için Özel Yetkilendirme Yöneticisi Oluşturma.
ServiceAuthorizationManager ServiceAuthorizationManager Hizmetin değerini döndürür. ServiceAuthorizationManager Yetkilendirme kararları vermekle sorumludur.
ExternalAuthorizationPolicies Hizmet için belirtilen özel yetkilendirme ilkelerinin koleksiyonu. Bu ilkeler, gelen iletilerdeki kimlik bilgileriyle ilişkili ilkelere ek olarak değerlendirilir.

Ayrıca bkz.