ASP.NET MVC Identity de kafam takılanlar

1,644 views
Skip to first unread message

Turgut Kançeltik

unread,
Dec 25, 2015, 2:36:59 AM12/25/15
to istanbul-coders
Öncelikle Selam herkese...

Arkadaşlar ASP.NET MVC Identity de kafama takılan bişey var DB de Identity nin kendisinin oluşturduğu tablolar var bu tabloda
AspNetUserClaims diye bi tablo var bu Claim tam olarak ne oluyor arkadaşlar yardımcı olabilecek varmı acaba ?
Role den farkı nedir ingilizcem olmadığı için bunu anlamakta çok güçlük çekiyorum neredeyse hiç türkçe kaynak bulamadım.
Bu Claim'ler hakkında bana yardımcı olabilecek arkadaşlar varmıdır acaba ne amaçla kullanılıyor bu claim Şimdiden teşekkür ediyorum arkadaşlar...

Oğuzhan EREN

unread,
Dec 25, 2015, 3:45:26 AM12/25/15
to istanbul-coders
claim' aslında permission gibi düşünebilirsin. Claim'i ister role ("forum-admin") olarak kullan ister permission ("comment/add")

permission kullanmak daha esnek bir yapı veriyor tabi:

https://lostechies.com/derickbailey/2011/05/24/dont-do-role-based-authorization-checks-do-activity-based-checks/

Ilgın Kanat

unread,
Dec 25, 2015, 3:51:33 AM12/25/15
to istanbu...@googlegroups.com
Merhabalar,

role kullandığımızda ne gibi dez avantajlarla karşı karşıya kalabiliriz - mvc ye yeni giriş yapıyorum.

25 Aralık 2015 10:45 tarihinde Oğuzhan EREN <ogu...@gmail.com> yazdı:
claim' aslında permission gibi düşünebilirsin. Claim'i ister role ("forum-admin") olarak kullan ister permission ("comment/add")

permission kullanmak daha esnek bir yapı veriyor tabi:

https://lostechies.com/derickbailey/2011/05/24/dont-do-role-based-authorization-checks-do-activity-based-checks/

--
* Mesaj alim frekansinizi grup uyelik ayarlarinizdan degistirebilirsiniz.
* Is arama veya ilan verme ile ilgili mailler icin konu kismina [IS_ILANI] tag'i eklemeniz gerekmektedir.
* Mesajlasmalarda her turlu hakaret ve satasma *uyari olmaksizin* uyeligin bitirilmesiyle son bulur.
* slack grubumuz: https://istanbulcoders.slack.com/ davetiye icin: http://goo.gl/forms/qc6Z78wpsL
* Is ilanlarinda grubu Ek Alici (cc) kismina koyun ki cevap donenler tum gruba donmesinler.
* Kisilere cevap yazacaginiz zaman, lutfen ilgili kisiyi alici (to) kismina koyun.
---
You received this message because you are subscribed to the Google Groups "istanbul-coders" group.
To unsubscribe from this group and stop receiving emails from it, send an email to istanbul-code...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
--
İyi çalışmalar,
Ilgın Kanat - CREATURK

Turgut Kançeltik

unread,
Dec 25, 2015, 3:54:01 AM12/25/15
to istanbul-coders
Oğuzhan claim i role gibi kullanmak bana biraz saçma geliyo zaten  role işimizi görürken neden claim kullanılsın ki.
Ayrıca "permission ("comment/add") " bunu biraz daha açabilirmisin ?

25 Aralık 2015 Cuma 10:45:26 UTC+2 tarihinde Oğuzhan EREN yazdı:

Turgut Kançeltik

unread,
Dec 25, 2015, 3:55:30 AM12/25/15
to istanbul-coders
Role kullanmanın mantığı anladığım kadarıyla user'ı yetkilendirme oluyo yani bi admin panelin var diyelim bi site için o admin paneline sadece Role'u Admin olan girebilir gibisinden düşünebilirsin

25 Aralık 2015 Cuma 10:51:33 UTC+2 tarihinde Ilgın Kanat yazdı:

Hatip Meviş

unread,
Dec 25, 2015, 4:39:36 AM12/25/15
to istanbu...@googlegroups.com
Permission bazlı yetkilendirme;
Siz bir yöneticisiniz, bir editör işe aldınız, sadece galeri ve foto alanlarına eklenen kayıtları düzenleme yetkisi vermek istiyorsunuz.

Bunu role bazlı doğrulamada yapsak; Yeni bir Role açıp ve ilgili action'larda tek tek bu role izin verip, projeyi deploy etmemiz gerekir.
Ama permission bazlı doğrulamada; Direk yönetim ekranından yeni bir rol açılır, role izinler atanır ve role kullanıcıya atanır.
Kullanıcı bir action'a istekte bulunduğu zaman;Kullanıcı ilk sisteme giriş yaptığında tüm izinleri session'a atanır. Kullanıcın sahip olduğu izinler arasından girilen action'a ait izin olup olmadığı kontrol edilir. Action'a izin varsa işleme devam eder, değilse yetkisiz giriş diye uyarı verilir yada başka sayfaya yönlendirilir.  (Bu kontrol için bir Attribute yazılması daha doğru olur.)

Dinamik menü oluşturmak; Sessionda tuttuğumuz izinler arasında menü elemanları seçilip menü listesi oluşturulur. Böylelikle kullanıcının yetkisinin olmadığı menüleride boş yere listelememiş oluyoruz.

Gördüğünüz gibi permission bazlı yetkilendirmede herşey çok esnek ve dinamik olduğundan büyük projelerde genellikle bu yöntem kullanılır.

25 Aralık 2015 10:55 tarihinde Turgut Kançeltik <turgut.k...@gmail.com> yazdı:

Turgut Kançeltik

unread,
Dec 25, 2015, 5:04:38 AM12/25/15
to istanbul-coders
Şöyle bi sorum daha olucak şimdi Identity nin oluşturduğu tablolarda Claims tablosunda UserId istiyo ozaman UserId yerine RoleId yi vermem gerekicek doğrumudur ?
SS'ta da attığım gibi sadece userId'ye göre claim oluşturabiliyorum sanırım 

25 Aralık 2015 Cuma 11:39:36 UTC+2 tarihinde Hatip Meviş yazdı:
Screenshot_3.png

Oğuzhan EREN

unread,
Dec 25, 2015, 5:30:18 AM12/25/15
to istanbul-coders
Ben sadece user -> claim ilişkisi olduğu durum için örnek verdim. Role varsa tabi ki role'de kullanılabilir. 

Role'de kullanıcıları kümeleyip o şekilde yetki kontrolü yaparsın. "Admin role'üne sahip kullanıcılar comment yazabilir" kuralını benimseyip kodu buna göre yazarsın.

Permission (veya activity temelli) kullandığında ise "Comment yazabilmek için 'Comment/Create' yetkisine ihtiyaç vardır' gibi bir kural tanımlarsın, bu durumda kullanıcının Role'üne değil permission listesine bakıp karar vermen gerekir.




25 Aralık 2015 Cuma 10:54:01 UTC+2 tarihinde Turgut Kançeltik yazdı:

Turgut Kançeltik

unread,
Dec 25, 2015, 6:16:53 AM12/25/15
to istanbul-coders
arkadaşlar yardımlarınız için çok teşekkür ederim ya bikaç gündür bu konuyu anlmaya çalışıyodum çok teşekkürler :)

Sadri Gülnaroğlu

unread,
Dec 25, 2015, 9:17:38 AM12/25/15
to istanbu...@googlegroups.com
Turgut selam, 

Claims Role-based'a gore daha esnek bir yapi soyleki guzel bir ornek gordum stackoverflow'da, ben de biraz degistirerek yaziyorum. 

Belli bir konuda yasal yas siniri 18 diyelim. sadece 18 yasindan buyuk kullanicilar bu islemi yapabiliyorlar, bir kullanici dusun Admin yetkisinde 19 yasinda. 

Normalde bu islemi yapabiliyor Admin yetkisinde ve hatta 19 yasinda. Ancak bir duzenleme geldi ve yas 20'ye cekildi. Simdi Role-based'a gore hala bu kisi yas sinirina takilmadan bu islemi yapabilecek eger metodun icinde bir if yoksa:) 

Claims der ki kullanici giris yaptiginda bir claims objesi olustur ve ona ver, her geldiginde bu talep objesi ile gelsin. Ben de bakayim icindeki degerlere gore bir mekanizma kurayim. 

Su sayfadaki orneklere bakabilirsin.  Claims ve Role-based beraber nasil kullaniliyor diye. 




Sadri Gülnaroğlu
Lead Software Developer

2015-12-25 13:16 GMT+02:00 Turgut Kançeltik <turgut.k...@gmail.com>:
arkadaşlar yardımlarınız için çok teşekkür ederim ya bikaç gündür bu konuyu anlmaya çalışıyodum çok teşekkürler :)

--

Turgut Kançeltik

unread,
Dec 25, 2015, 9:28:41 AM12/25/15
to istanbul-coders
Bu attığın örneği görmüştüm fakat ingilizcem olmadığı için açıkçası pek fazlada bişey anlayamadım ne yazıkki :(
Fakat burada Claim'i web api kullanarak yapıyo yani burdan şunumu anlamam gerekiyo claimleri api kullanarak mı yönermek gerek ?



25 Aralık 2015 Cuma 16:17:38 UTC+2 tarihinde Sadri yazdı:

Turgut Kançeltik

unread,
Dec 25, 2015, 9:42:00 AM12/25/15
to istanbul-coders
Sadri kusura bakma bi önceki yorumumda biraz saçma bi soru sorduğumu farkettim :D 

O soruyu şunla değiştirmek istiyorum 

Yukarıda bi ScreenShot attım claims tablosu userid alıyor. Her user ın atıyorum 10 tane claim i olucak olsa  100 kullanıcı olsa Bin tane claim yapar db şişicektir bunun yerine bütün userları etkilecek bi claim yapacak olsam yeni bi tablo oluşturmam mı gerekicek?

Yani RoleId alan bi claim tablosu oluşturmam gerekicek öylemi ?


25 Aralık 2015 Cuma 16:17:38 UTC+2 tarihinde Sadri yazdı:
Turgut selam, 

Sadri Gülnaroğlu

unread,
Dec 25, 2015, 9:48:09 AM12/25/15
to istanbu...@googlegroups.com
Claims tablosu nasil calisiyor bakacagim. Eger senin projende Role-based yeterli ise claims dusunmene gerek yok bu arada.  Yani bir icerik sitesi ise ve roller kesin belliyse role-based seni kurtaracaktir diye dusunuyorum. 

Sadri Gülnaroğlu
Lead Software Developer

Turgut Kançeltik

unread,
Dec 25, 2015, 9:51:54 AM12/25/15
to istanbul-coders
Olay projemde kullanıp kullanmamak değil ki :)

Sadece öğrenmek istiyorum yani bu olayı her ihtimali falan :) sadece şuanki oluşturduğum deneme projesinde karşılaştığım bişey bu :)




25 Aralık 2015 Cuma 16:48:09 UTC+2 tarihinde Sadri yazdı:

Sadri Gülnaroğlu

unread,
Dec 25, 2015, 9:55:48 AM12/25/15
to istanbu...@googlegroups.com
Denemek istiyorsan oncelikle claims'i anlamaya calis. Tabloyu bosver :) 

En temelde bir authentication-authorization problemine dayaniyor. Bununla ilgili de farkli konseptler var, role-based, resource-based, claims-based gibi. Belki bir toplanti konusu olabilir bu. 

Simdilik tablo yada bir sisteme bagli kalmadan mantigini kavramaya calismak daha iyi olacaktir. 

Sadri Gülnaroğlu
Lead Software Developer

Turgut Kançeltik

unread,
Dec 25, 2015, 10:02:44 AM12/25/15
to istanbul-coders
Yani şuan Claims mantığını anladığımı düşünüyorum ama tabi genede eksiklerim illaki vardır. Yada anladığımı sanıyoda olabilirim bilemiyorum :)

Role-Based mantığı claim-based mantığından daha kolay anlaşılır olduğunu düşünüyorum çünkü şuan zaten ben Role-Based mantığını kullanıyorum. ((Role = "Admin")) 

Resource-Based mantığını bilmiyorum şuan ilkdefa senden duydum :)

Claim-Based mantığı da Role-Based mantığının daha ayrıntılı hali gibi anladım


25 Aralık 2015 Cuma 16:55:48 UTC+2 tarihinde Sadri yazdı:
Reply all
Reply to author
Forward
0 new messages