Aracılığıyla paylaş


Talep Kullanan Web Uygulamaları ve Hizmetlerinde Yetkilendirme

Güncelleştirme: 19 Haziran 2015

Şunlar için geçerlidir: Azure

Uygulanan Öğe

  • Microsoft Azure Active Directory Access Control (Access Control Hizmeti veya ACS olarak da bilinir)

  • ® Windows Identity Foundation (WIF)

  • ASP.NET

  • Windows Communication Foundation (WCF)

Özet

Bağlı taraf uygulamasında, yetkilendirme kimliği doğrulanmış bir kimliğin hangi kaynaklara erişebileceğini ve bu kaynaklar üzerinde hangi işlemleri gerçekleştirebileceğini belirler. Uygunsuz veya zayıf yetkilendirme, bilgi ifşasına ve verilerin izinsiz kullanımına neden olur. Bu konu başlığı altında, ACS ve WIF kullanarak talep kullanan ASP.NET web uygulamaları ve hizmetleri için yetkilendirme uygulamaya yönelik kullanılabilir yaklaşımlar özetlenmektedir.

Hedefler

  • Talepleri kullanan yetkilendirme yaklaşımlarını listeleyin.

  • Her yaklaşım için üst düzey tasarımı özetler.

  • Her yaklaşımın avantajlarını ve dezavantajlarını belirtme.

Genel Bakış

İlk sürümünden bu yana, .NET Framework yetkilendirmenin uygulanması için esnek bir mekanizma sunmuştur. Bu mekanizma iki basit arabirimi temel alır: IPrincipal ve IIentity. IIentity'nin somut uygulamaları kimliği doğrulanmış bir kullanıcıyı temsil eder. Örneğin, WindowsIdentity uygulaması Active Directory tarafından kimliği doğrulanmış bir kullanıcıyı, GenericIdentity ise özel kimlik doğrulamasıyla kimliği doğrulanmış bir kullanıcıyı temsil eder. IPrincipal'ın somut uygulamaları, rol deposuna bağlı olarak rolleri kullanarak izinleri denetlemeye yardımcı olur. Örneğin, WindowsPrincipal , Active Directory gruplarında üyelik için WindowsIdentity'yi denetler. Bu denetim, IPrincipal arabiriminde IsInRole yöntemi çağrılarak gerçekleştirilir. Rollere göre erişim denetimine Rol Tabanlı Erişim Denetimi (RBAC) adı verilir. RBAC, bu konunun "Rol Tabanlı Access Control" bölümünde açıklanmıştır. Talepler, benzer, rol tabanlı yetkilendirme mekanizmalarını desteklemek amacıyla roller hakkında bilgi taşımak için kullanılabilir.

Talepler, rollerin ötesinde çok daha zengin yetkilendirme kararları vermek için de kullanılabilir. Talepler yaş, posta kodu, ayakkabı boyutu vb. neredeyse her şeyi temel alabilir. Rastgele taleplere göre erişimi denetleme, Talep Tabanlı Access Control (CBAC) veya talep tabanlı yetkilendirme olarak adlandırılır. Talep tabanlı yetkilendirme, bu konunun "Talep Tabanlı Access Control" bölümünde açıklanmıştır.

Yetkilendirme denetimleri ACS tarafında değil uygulama tarafında gerçekleştirilir. ACS, talepleri uygulamaya taşıyan belirteçleri veren bir güvenlik belirteci hizmeti (STS) görevi görür. Belirteçler, kimlik sağlayıcıları tarafından taleplerle ve isteğe bağlı olarak acs tarafından kendi kural altyapısı kullanılarak zenginleştirilmiştir. Uygulama belirteci taleplerle aldığında belirteci ayrıştırabilir, ilgili talepleri ayıklayabilir ve RBAC veya talep tabanlı bir yaklaşım kullanarak yetkilendirme kararları alabilir. WIF, belirteci ayrıştırmak ve kullanımı kolay bir uygulama programlama arabirimi (API) aracılığıyla yetkilendirme kararları için kullanılabilir hale getirmek için kullanılır. WIF hakkında daha fazla bilgi için bkz . WIF SDK'sı (https://go.microsoft.com/fwlink/?LinkID=187481). Talep kullanan uygulama ve hizmetlerde yetkilendirmeyi düşünürken aşağıdaki diyagramı göz önünde bulundurun. Kimlik sağlayıcısının başarılı bir kimlik doğrulamasından sonra bir belirteç (diyagramdaki IdP belirteci) oluşturduğunu unutmayın. IdP belirteci ACS kural altyapısı tarafından dönüştürülebilir. ACS, kimlik sağlayıcısının karşılaştığı belirteçte gelen talepleri ekleyebilir, kaldırabilir veya değiştirebilir. Son olarak, ACS tarafından verilen belirteç uygulamaya gönderilir ve WIF tarafından işlenir. Erişim denetimi WIF'de RBAC veya CBAC yaklaşımı kullanılarak gerçekleştirilir.

ACS v2 WIF Authorization

Rol Tabanlı Access Control

RBAC, kullanıcı izinlerinin yönetildiği ve kullanıcı rollerine göre bir uygulama tarafından zorlanan yetkilendirme yaklaşımıdır. Kullanıcının bir eylemi gerçekleştirmesi gereken rolü varsa, erişim verilir; aksi takdirde, erişim engellenir.

IPrincipal.IsInRole Yöntemi

Talep kullanan uygulamalarda RBAC yaklaşımını uygulamak için, talep kullanan olmayan uygulamalarda olduğu gibi IPrinicpal arabirimi IsInRole() yöntemini kullanın. IsInRole() yöntemini kullanmanın çeşitli yolları vardır:

  • IPrincipal.IsInRole("Administrator") üzerinde açıkça çağrılır. Bu yaklaşımda, sonuç olarak Boole değeri elde edilir. Kendi koşullu deyimlerinizde kullanın. Kodunuzdaki herhangi bir yerde rasgele kullanılabilir.

  • PrincipalPermission.Demand() güvenlik talebini kullanma. Bu yaklaşımda, talep karşılanmazsa sonuç olarak bir özel durum elde edilir. Bu, özel durum işleme stratejinizle uyumlu olmalıdır. Performans açısından özel durumlar oluşturmak Boole'u kaldırmaya kıyasla çok daha pahalıdır. Bu, kodunuzdaki herhangi bir yerde kullanılabilir.

  • Bildirim temelli öznitelikleri kullanma [PrincipalPermission(SecurityAction.Demand, Rol = "Yönetici")]. Bu yaklaşıma, yöntemleri donatmak için kullanıldığından bildirim temelli denir. Yöntem uygulamalarının içindeki kod bloklarında kullanılamaz. Talep karşılanmazsa sonuç olarak bir özel durum elde edilir. Özel durum işleme stratejinizle uyumlu olduğundan emin olmanız gerekir.

  • URL yetkilendirmesini<> kullanma, web.configyetkilendirme bölümünü kullanma. Bu yaklaşım, yetkilendirmeyi BIR URL düzeyinde yönetirken uygundur. Bu, daha önce bahsedilenler arasında en genel düzeydir. Bu yaklaşımın avantajı, değişikliklerin yapılandırma dosyasında yapılması, yani değişiklikten yararlanmak için kodun derlenmesine gerek olmamasıdır.

Rolleri Talepler Olarak İfade Etme

IsInRole() yöntemi çağrıldığında, geçerli kullanıcının bu role sahip olup olmadığını görmek için bir denetim yapılır. Talep kullanan uygulamalarda, rol belirteçte kullanılabilir olması gereken bir rol talep türü olarak ifade edilir. Rol talep türü, aşağıdaki URI kullanılarak ifade edilir:

https://schemas.microsoft.com/ws/2008/06/identity/claims/role

Bir belirteci rol talep türüyle zenginleştirmenin birkaç yöntemi vardır:

  • ACS kural altyapısını kullanma—Bu durumda, belirli bir rol türünde talepler oluşturan talep dönüştürme kuralları oluşturmak için ACS Yönetim Portalı'nı veya ACS Yönetim Hizmeti'ni kullanarak bir kural oluşturursunuz. Kurallar ve belirteç dönüştürme hakkında daha fazla bilgi için bkz. Kural Grupları ve Kurallar ve Nasıl yapılır: Kuralları Kullanarak Belirteç Dönüştürme Mantığını Uygulama.

  • ClaimsAuthenticationManager kullanarak rastgele talepleri talep rol türüne dönüştürme— ClaimsAuthenticationManager, WIF'nin bir parçası olarak gelen bir bileşendir. Uygulama başlattıklarında isteklerin kesilmesini sağlar, belirteçleri denetler ve talepleri ekleyerek, değiştirerek veya kaldırarak dönüştürür. Talepleri dönüştürmek için ClaimsAuthenticationManager kullanma hakkında daha fazla bilgi için bkz. Nasıl yapılır: WiF ve ACS Kullanarak Talep Kullanan ASP.NET Uygulamasında Rol Tabanlı Access Control (RBAC) Uygulama

  • samlSecurityTokenRequirement yapılandırma bölümünü kullanarak rastgele talepleri bir rol türüyle eşleme— Talep dönüştürme işleminin yalnızca yapılandırma kullanılarak yapıldığı ve kodlama gerektirmediği bildirim temelli bir yaklaşım.

Talep Tabanlı Access Control

CBAC, erişim verme veya reddetme yetkilendirme kararının, karar vermek için taleplerde bulunan verileri kullanan rastgele mantığı temel aldığı bir yetkilendirme yaklaşımıdır. RBAC söz konusu olduğunda, kullanılan tek talebin rol türü talep olduğunu hatırlayın. Rol türü talep, kullanıcının belirli role ait olup olmadığını denetlemek için kullanıldı. Beyana dayalı yetkilendirme yaklaşımını kullanarak yetkilendirme kararı verme sürecini anlamak için aşağıdaki adımları göz önünde bulundurun:

  1. Uygulama bir istek alır.

  2. Uygulama gelen talepleri ayıklar.

  3. Uygulama, talepleri karar mantığı mekanizmasına geçirir. Bellek içi kod veya web hizmetine yapılan bir çağrı, veritabanına yapılan bir sorgu veya gelişmiş bir kural altyapısı çağırabilir.

  4. Karar mekanizması taleplere göre sonucu hesaplar.

  5. Sonuç true ise erişim verilir, false ise engellenir. Örneğin kural, kullanıcının 21 yaşında veya daha büyük olması, Washington Eyaleti'nde yaşaması ve Windows Live ID (Microsoft hesabı) tarafından kimliğinin doğrulanması olabilir.

ACS, talepleri taşıyan belirteçler veren bir STS görevi görür. ACS kural altyapısını kullanarak hangi taleplerin (hem talep türleri hem de değerler) verildiğini denetleyebilirsiniz. ACS kural altyapısı hakkında daha fazla bilgi edinmek için bkz. Kural Grupları ve Kurallar ve Nasıl yapılır: Kuralları Kullanarak Belirteç Dönüştürme Mantığı Uygulama. ClaimsAuthorizationManager, talep kullanan uygulamalarda CBAC uygulamak için önemlidir. ClaimsAuthorizationManager, WIF'nin bir parçası olarak gelen bir bileşendir. ClaimsAuthorizationManager, gelen taleplere göre yetkilendirme kararları vermek için gelen istekleri kesmenize ve istediğiniz mantığı uygulamanıza imkan tanır. Bu ayrıca yetkilendirme kararlarının uygulama kodundan dışlanıp ayrıştırılabildiği bir genişletilebilirlik noktasıdır. Bu, yetkilendirme mantığının değiştirilmesi gerektiğinde önemli hale gelir. Bu durumda, ClaimsAuthorizationManager uygulamanın bütünlüğünü etkilemez ve bu nedenle değişikliğin sonucu olarak uygulama hatası oluşma olasılığını azaltır. Talep tabanlı erişim denetimi uygulamak için ClaimsAuthorizationManager'ı kullanma hakkında daha fazla bilgi edinmek için bkz. Nasıl yapılır: WIF ve ACS Kullanarak Talep Kullanan ASP.NET Uygulamasında Talep Yetkilendirmesi Uygulama.

Ayrıca Bkz.

Kavramlar

ACS Kullanan Senaryolar ve Çözümler