Tipik Authorize özniteliğiyle güven altına almak istediğim bazı denetleyicileri olan bir .NET Azure Mobile Services projem var. Bir Roles tablosu ve bir UserProfiles tablosu oluşturabilir ve Roles tablosundaki Rol'leri kullanarak Google, Facebook, vb. Aracılığıyla kimliği doğrulanmış çeşitli kullanıcıları ilişkilendirebilirim.Azure Mobile Services Kullanıcısı'na özel Roller Ekleme (Google, Twitter, Facebook, Microsoft)
Soruma: Doğrulama tamamlandıktan sonra Yetkilendirme filtresinin OnAuthorize yöntemi uygulanmadan önce Rolleri Hizmet Sağlayıcılara nasıl ekleyebiliriz? Bu mümkün mü?
yapmak istediğim şeyinÖrnek:
[Authorize(Roles = "admin")]
public async Task<IHttpActionResult> Put(int id, MyDto dto){...}
Kaba tablo örnekleri:
Roles
id | name
1 | user
2 | admin
UserProfiles
id | externalLoginId | favoriteColor
1 | Google:<ServiceUser.Id> | blue
UserRoles (Linking Table)
roleId | userId
2 | 1
Düzenleme:
Seçeneklerden biri Yetki filtresi geçersiz kılma kendi eylem filtresi oluşturmak için olabilir özniteliği ve OnAuthorize yönteminde, geçerli kullanıcı için rol almak üzere UserProfiles ve Roles tablolarını sorgulayabilir, ardından Yetkilendirmede belirtilen rolleri kontrol edebilirim. Kullanıcının erişimi olup olmadığını belirlemek için nesnenin Rolleri özelliği. Ancak, bir şekilde, boru hattında, Rolleri taleplerini mevcut kullanıcıya eklemeyi engelleyebileceğim bir yer olması gerektiği düşüncesinde.
ama sonunda çözüm geldi altında. Özel OWIN middleware'inden özel LoginProviders'a kadar her şeyi denedim ve hiçbiri istediğimi almadı. Kendi özel AuthorizationAttribute'imi oluşturabilirdim, ancak boru hattında, yalnızca hak taleplerini ekleyebildiğim ve her zamanki AuthorizeAttribute [Authorize (Roles = "Kullanıcı, Yönetici") kullanabileceğimi düşündüm.)]. Aşağıdaki çözüm, bu hedefi gerçekleştirir. Ama şimdi, Microsoft.WindowsAzure. * 'Un istediğimden daha çok iç işleyişi hakkında daha çok şey biliyorum. :) –