Hangi veriler `` Talep '' olarak saklanmalıdır?


9

ASP.Net Core'da Claimsyetkilendirmenin çok somut olmayan bir yöntem olduğunu düşünüyorum. Bir şey ekleyebilir ClaimTypeve eşleyebiliriz ClaimValue; gruplar, ad, soyad, brithdate, canAccessThisURI, isEditor, vb. Ancak, bu yaklaşım (talep olarak saklanabilecek her şeyi saklamak), uygulama verilerimin% 50'sini içeren büyük bir talep tablosu oluşturacaktır.

Merak ediyorum, iyi bir uygulama olarak, iddia olarak saklanması gereken ortak veriler nelerdir?


4
Kullanıcıyı doğrulamak / yetkilendirmek için gereken verileri orada depolarsınız. Neredeyse kesinlikle bu değildir sizin uygulama veri% 50'sini kapsar.
Robert Harvey

Yanıtlar:


3

Bir hak talebi, sisteminizdeki birini tanımlamak veya yetkilendirmek için kullanılabilecek bir kullanıcı hakkında bir gerçektir . Bu iki kısıtlama, hak talebinde bulunacağınız şeyi sınırlamak için yeterli olmalıdır.

İddialar için bazı fikirler şunları içerir:

  • Kullanıcı kimliği
  • Kullanıcı adı
  • Kullanıcı e-postası
  • roller
  • grup üyelikleri

Kullanıcının meta verileri, uygulamayı kullanıcı için kişiselleştirmek ve kullanıcıyı verileriyle ilişkilendirmek için gerekenlerle sınırlı olmalıdır. Kullanıcının kimliği, kullanıcıyı verilerle ilişkilendirmek veya bir denetim izi sağlamak için yeterlidir. Açgözlü olma.

Roller ve grup üyelikleri yetki talepleridir. Örneğin, uygulamanızda gruplarınız varsa, kullanıcının ait olduğu grupların listesi özel bir gruba erişip erişemediklerini hızlıca kontrol etmenizi sağlar. Roller biraz daha hassastır ve bir kullanıcının sahip olduğu ayrıcalıklara yöneliktir. Bunlar genellikle uygulamaya özeldir, bu nedenle yalnızca zorlamak için ihtiyacınız olanları ekleyin.


0

Bu şekilde yapan birçok sistem, özellikle STS / federasyon sistemleri vardır:

  • kullanıcıyı benzersiz bir şekilde tanımlayan bir hak talebi
  • (ve diğerlerinin) erişebildikleri genel kavramsal şeyleri tanımlayan iddiaların çeşitliliği

Kullanıcının uygulama içindeki "profil" verileri, kullandığınız kimlik doğrulama kaynağına / kaynağından çeviri yapamayabilir ve aynı uç noktaları her zaman veya tüm kullanıcılar için kullanamazsınız.

Eski Formlar kimlik doğrulamasına aşina olsaydınız, kullanıcı adı ve rol modeline benzer ve System.Security.Claims.ClaimAd adlarının ve rolünün uygun şekilde kullanılması durumunda yerleşik bir çok şey hala böyle görünüyor.

Ne eski ne de yeni model talep veya rol mirası için kutudan çok fazla şey vermedi, ancak bunu uygulamak ve uygulamak özellikle zor değil, talepte oyunda tutmanız gereken taleplerin veya rollerin hacmini azaltmanıza izin veriyor talep etmek.

Başvurunuzun bir doğum gününü takip etmesi gerekiyorsa, ancak bunu bir güvenlik mekanizmasında kullanmanız gerekmiyorsa, talep toplamada tutmanın gerçekten bir yararı yoktur. Ayrı bir profil veri kümesine veya başka bir şeye koyun.

Uygulamanızın doğum gününü başka bir sistemden talep olarak alması gerekiyorsa, federatedAuthentication'ı özelleştirmek veya ekstra talebin devam etmesine izin vermek gibi bir şeye bakıyorsunuz.

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.