ASP .NET kimliğinde iddialar nedir


174

Birisi yeni ASP.NET Identity Core'da talep mekanizmasının ne anlama geldiğini açıklayabilir mi?

Gördüğüm gibi , ve AspNetUserLoginsiçeren bir tablo var .UserIdLoginProviderProviderKey

Ancak, verilerin AspNetUserClaimstabloya ne zaman eklendiğini ve bu tablonun hangi durumlar için kullanıldığını hala anlayamıyorum veya bulamıyorum ?

Yanıtlar:


207

yeni ASP.NET Kimlik Çekirdeğinde hak talebi mekanizması ne anlama geliyor?

Rol ve Hak Talebine dayanan iki yaygın yetkilendirme yaklaşımı vardır.

Rol Tabanlı Güvenlik

Bir kullanıcı, kullanıcının erişim haklarını aldığı bir veya daha fazla role atanır. Ayrıca, bir role bir kullanıcı atayarak, kullanıcı bu rol için tanımlanan tüm erişim haklarını hemen alır.

Talebe Dayalı Güvenlik

Talebe dayalı bir kimlik, iddia kümesidir. Hak talebi, bir varlığın (bir kullanıcı veya başka bir uygulama) kendisi hakkında yaptığı bir ifadedir, sadece bir hak talepidir. Örneğin bir talep listesi kullanıcının adını, kullanıcının e-postasını, kullanıcının yaşını, kullanıcının bir işlem için yetkisini içerebilir. Rol tabanlı Güvenlik'te, kullanıcı kimlik bilgilerini doğrudan uygulamaya sunar. Talebe dayalı bir modelde kullanıcı, başvuruya ilişkin kimlik bilgilerini değil talepleri sunar. Bir değerin pratik değere sahip olması için, başvurunun güvendiği bir kuruluştan gelmesi gerekir.

Aşağıdaki adımlar, talep tabanlı bir güvenlik modelinde gerçekleşen diziyi göstermektedir:

  1. Kullanıcı bir işlem ister. Bağlı olan taraf (RP) uygulaması bir jeton ister.
  2. Kullanıcı, RP uygulamasının güvendiği veren yetkiliye kimlik bilgilerini sunar.
  3. Düzenleyen makam, kullanıcının kimlik bilgilerini doğruladıktan sonra taleplerle imzalı bir jeton yayınlar.
  4. Kullanıcı jetonu RP uygulamasına sunar. Başvuru, jeton imzasını doğrular, talepleri çıkarır ve taleplere dayanarak talebi kabul eder veya reddeder.

Ancak, veriler AspNetUserClaims'e eklendiğinde ve bu tablonun hangi durumlar için kullanıldığını anlayamıyorum ve bulamıyorum.

Rol Tabanlı Güvenliğin kullanılmadığı bir durumdaysanız ve Talebe Dayalı Güvenlik kullanmayı seçtiyseniz, AspNetUserClaims tablosunu kullanmanız gerekir. Talepleri ASP.NET Kimliğinde nasıl kullanacağınız hakkında daha fazla bilgi için aşağıdaki bağlantıya bakın.

http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html

Güncelleme

Rol tabanlı güvenliği ne zaman ve hak talebine dayalı olarak kullanmam gerekir? Birkaç örnek yazabilir misiniz?

Rol Tabanlı veya Talebe Dayalı Güvenliği kullanacağınız veya kullanmayacağınız çok açık bir durum yoktur, B yerine A kullanacağınız bir durum gibi değil.

Ancak, hak talebine dayalı erişim kontrolü, yetkilendirme kurallarının temel iş mantığından daha iyi ayrılmasını sağlar. Yetkilendirme kuralları değiştiğinde, temel iş mantığı etkilenmez. Talebe Dayalı yaklaşımı kullanmayı tercih edebileceğiniz durumlar olacaktır.

Bazen iddialara ihtiyaç duyulmaz. Bu önemli bir feragatname. Bir dizi dahili uygulamaya sahip şirketler, taleplerin sağladığı birçok avantajı elde etmek için Tümleşik Windows Kimlik Doğrulaması'nı kullanabilir. Active Directory, kullanıcı kimliklerini depolamak için harika bir iş çıkarır ve Kerberos Windows'un bir parçası olduğundan, uygulamalarınızın çok fazla kimlik doğrulama mantığı içermesi gerekmez. Oluşturduğunuz her uygulama Tümleşik Windows Kimlik Doğrulaması'nı kullanabildiği sürece, kimlik ütopyasına zaten ulaşmış olabilirsiniz. Ancak, Windows kimlik doğrulamasından başka bir şeye ihtiyacınız olabilmesinin birçok nedeni vardır. Windows etki alanınızda hesabı olmayan kişiler tarafından kullanılan web'e dönük uygulamalarınız olabilir. Başka bir neden de şirketinizin başka bir şirketle birleşmiş olması olabilir. güven ilişkisi olmayan (ve hiçbir zaman olmayacak) iki Windows ormanında kimlik doğrulamada sorun yaşıyorsanız. Belki de .NET Framework olmayan uygulamaları olan başka bir şirketle kimlikleri paylaşmak ya da farklı platformlarda çalışan uygulamalar (örneğin Macintosh) arasında kimlikleri paylaşmak zorundasınız. Bunlar, iddia tabanlı kimliğin sizin için doğru seçim olabileceği birkaç durumdur.

Daha fazla bilgi için lütfen http://msdn.microsoft.com/en-us/library/ff359101.aspx adresini ziyaret edin.


6
Cevabınız için teşekkür ederim, ancak hâlâ anlamadım, rol tabanlı güvenliği ne zaman kullanmalıyım ve talep tabanlıyken? Birkaç örnek yazabilir misiniz?
Maxim Zhukov

1
@ FSou1'de, Role Dayalı veya Talebe Dayalı yaklaşımı kullanacağınız bir durum yoktur. Daha fazla netlik için güncellenmiş cevabıma bakın.
Lin

The user presents the credentials to the issuing authority that the RP application trusts.Bu yetki / yayıncı olarak ne kullanabilirsiniz? Bazı örnekler iyi olurdu. Ben msdn sitesindeki (sağladığınız bağlantı) makaleyi kırmızı, ancak sadece bir örnek listeler: ADFS, başka seçenekler var mı? Bu bilgi hiçbir yerde bulunamıyor. :(
Jo Smo

1
Talep Tabanlı Kimlik ve Erişim Kontrolü Kılavuzu , talebe göre Rol Tabanlı Erişim Kontrolü (RBAC) tabanlı yaklaşımların tam bir açıklamasını sunar. Kitabın tamamı MS indirme yoluyla ücretsiz ve çevrimiçi olarak mevcuttur. goodreads.com/book/show/…
Chris Mylonas

2
@ChrisMylonas tarafından bahsedilen RBAC ücretsiz Microsoft kitabı Microsoft'tan ücretsiz olarak buradan indirilebilir: microsoft.com/en-us/download/details.aspx?id=28362
OzBob

16

Sadece @Lin'in yukarıda söylediklerine daha fazlasını eklemek için. Özellikle şu soruya atıfta bulunuyorum:

Rol tabanlı güvenliği ne zaman ve hak talebine dayalı olarak kullanmam gerekir? Birkaç örnek yazabilir misiniz?

Bir teknisyeninizin ve bir yöneticinizin olduğu bir saatli sisteminiz olduğu bir durumu düşünün. Her haftanın sonunda teknisyen, o hafta için çalışılan ve maaş bordrosu tarafından kullanılan ve kullanılan çalışma saatlerini gösteren saat bilgilerine sahip raporlar düzenlemelidir. Nihai raporlar gönderilmeden önce bu tür sistemlerin genellikle değiştirilmesi veya düzeltilmesi gerekir, çünkü çalışanlarınıza fazla ödeme yapmak veya düşük ödeme yapmak istemezsiniz. Role-BasedBir Manager Roleve oluşturarak Yönetici ve Teknisyen için bir yaklaşım kullanabilirsiniz Technician Role. Ancak Manager Rolezanaatkârların saat bilgilerine erişme ve bunları düzenleme yeteneğine sahip olanıdır. Öte yandan,Technician Rolebu bilgilere erişme yeteneği olmadan. Ama işte ilginç kısım; Yönetici bir talepte bulunabilir ve bir teknisyenin Saat Sistemlerine erişmesine ve rapor vermesine izin verebilir. Bu nedenle, yalnızca düzenleme yapılmadan erişim için bir hak talebinde bulunulabilir veya erişim ve düzenleme yetenekleriyle yapılabilir.

Daha çok, Evet, varsayılan olarak yönetici olarak teknisyenimin erişemediği bazı bilgilere erişebilirim. Ama ben her zaman ofiste değil miyim? Etrafta olmasam bile işi hala yapabilmesi için ne yapabilirim? Bunu çözmek için sistem, yöneticilerin belirli bilgilere erişmeden insanlar için hak talepleri oluşturma özelliğine sahip olabilir. Bunları sık sık ERP sistemlerimizde her yerde görüyoruz. Bazı modüllere erişimi olmayan ve terfi ettiklerinde, bazen aynı kullanıcı rolünü koruyan ERP sisteminin daha fazla modülüne izin veriyorlar.

Bu, iddiaları ve rolleri daha iyi anlayabileceğiniz bir örnektir.


0

ASP.Net kimliğinde iki tür kimlik doğrulama vardır.

  1. Rol bazlı
  2. Talebe dayalı

Bunlardan birini veya her ikisini aynı anda kullanabilirsiniz. Çok tanımlanmış şeyleriniz olduğunda rol tabanlı kullanın. Örneğin, iki rolea öğretmeni ve öğrencisi yaratırsınız. Sadece öğretmen konu ekleyebilir. Böylece, konu eklemek için erişmek istediğiniz kullanıcılara öğretmen rolü verdiniz.

Talebe dayalı daha esnektir. Bazı öğrencilerin de ders ekleyebileceği bir gereksiniminiz olduğunu varsayalım. Bu durumda, öğrenci olabilecek ve konu eklemek için erişebilecek bir rol daha oluşturmanız gerekir. Ama iddia tabanlı kullanıyorsanız çok kolay olurdu. Sadece addSubject gibi bir hak talebi oluşturun ve bir eklenti eklemek için erişmek istediğiniz herhangi bir kullanıcıya bunu atayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.