Aracılığıyla paylaş


Nasıl yapılır: WIF ve ACS Kullanarak Talep Kullanan ASP.NET Uygulamasında Rol Tabanlı Access Control (RBAC) Uygulama

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

Özet

Bu konuda, WIF ve ACS kullanarak talep kullanan ASP.NET web uygulamalarında Rol Tabanlı Access Control (RBAC) yetkilendirmenin nasıl uygulandığı açıklanmaktadır.

İçindekiler

  • Hedefler

  • Genel Bakış

  • Adımların Özeti

  • 1. Adım – Web Uygulaması ASP.NET Basit Talep Kullanan Bir Uygulama Oluşturma

  • 2. Adım – ACS'de Rol Taleplerini Yapılandırma

  • 3. Adım : ASP.NET Web Uygulamasında Rol Denetimleri Uygulama

  • 4. Adım – Özel ClaimsAuthenticationManager Kullanarak Talep Dönüşümü Uygulama

  • 5. Adım – Çalışmanızı Test Edin

  • İlgili Öğeler

Hedefler

  • ACS kullanarak rol taleplerini yapılandırın.

  • ClaimsAuthenticationManager kullanarak rol taleplerini dönüştürün.

  • IsInRole yöntemini ve PrinciaplPermission özniteliklerini kullanarak rol tabanlı erişim denetimi denetimleri uygulayın.

Genel Bakış

RBAC, uygulamalarda erişimi kısıtlamak için yaygın olarak benimsenen bir yaklaşımdır. ASP.NET web uygulamalarında bu yaklaşım, ASP.NET 1.0'dan bu yana kullanılabilen IsInRole yöntemi, PrincipalPermission özniteliği veya talepleri kullanılarak uygulanır. Yetkilendirme için talepleri kullanabilir, böylece WIF ve ACS gibi yeni teknolojileri kullanırken iyi oluşturulmuş uygulamaları koruyabilirsiniz. WIF çalışma zamanını ve SDK'sını buradan indirebilirsiniz:

Adımların Özeti

  • 1. Adım – Basit Talep Kullanan ASP.NET Web Uygulaması Oluşturma

  • 2. Adım – ACS'de Rol Taleplerini Yapılandırma

  • 3. Adım : ASP.NET Web Uygulamasında Rol Denetimleri Uygulama

  • 4. Adım – Özel ClaimsAuthenticationManager Kullanarak Talep Dönüşümü Uygulama

  • 5. Adım – Çalışmanızı Test Edin

1. Adım – Basit Talep Kullanan ASP.NET Web Uygulaması Oluşturma

Bu adım, RBAC uygulamak için temel olarak kullanılacak temel bir ASP.NET web uygulamasının nasıl oluşturulacağını gösterir.

Basit bir ASP.NET web uygulaması oluşturmak için

  1. "Yönetici olarak çalıştır" seçeneğiyle Visual Studio başlatın. WiF için bu gereklidir.

  2. Boş Web Uygulaması ASP.NET yeni bir oluşturun.

  3. aspx web formunu ekleyin ve sonra buna default.aspx gibi bir ad verin.

2. Adım – ACS'de Rol Taleplerini Yapılandırma

Bu adım, kural gruplarını kullanarak ACS Yönetim Portalı'nda rol taleplerini yapılandırmayı gösterir. Tam adım adım izlenecek yol için Bkz. Nasıl yapılır: Kuralları Kullanarak Belirteç Dönüştürme Mantığını Uygulama .

ACS Yönetim Portalı'nda rol taleplerini yapılandırmak için

  1. Bağlı Olan Taraf Uygulamasını Düzenle sayfasında, aşağı kaydırarak Kural Grupları bölümüne gelin ve istediğiniz grubun bağlantısına tıklayın. Seçili olduğundan emin olun.

  2. Kural Grubunu Düzenle sayfasında, aşağı kaydırarak Kural bölümüne gelin ve Kural Ekle bağlantısına tıklayın.

  3. Talep Kuralı Ekle sayfasında, aşağı kaydırarak Çıkış talep türü bölümüne gelin, Tür seçin radyo düğmesine tıklayın ve ardından aşağıdaki talep türünü seçin.

    https://schemas.microsoft.com/ws/2008/06/identity/claims/role
    
  4. Çıktı talep değeri bölümünde Değer girin'e tıklayın ve metin kutusuna değer olarak aşağıdaki metni girin:
    Kullanıcı

  5. İsteğe bağlı olarak, (önerilir) bir açıklama ekleyin ve kaydet'e tıklayın.

Herhangi bir belirteçe eklenebilen Kullanıcı rolü talebi'ni yapılandırmış durumdasınız. Senaryo, gereksinimlerinize bağlı olarak farklı olabilir. Daha karmaşık kurallar yapılandırma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Kuralları Kullanarak Belirteç Dönüştürme Mantığı Uygulama.

3. Adım : ASP.NET Web Uygulamasında Rol Denetimleri Uygulama

Bu adım RBAC'nin nasıl uygulanacaklarını gösterir.

ASP.NET web sayfasında RBAC uygulamak için

  1. Microsoft.IdentityModel derlemesine bir başvuru ekleyin.

  2. default.aspx.cs dosyasının arkasındaki kodu açın.

  3. Bildirimleri kullanarak aşağıdakileri ekleyin.

    using System.Security.Permissions;
    using System.Threading;
    using Microsoft.IdentityModel.Claims;
    using System.Security;
    
  4. Page_Load olay işleyicisini aşağıdaki güvenlik talebiyle süsleyin. Bu öznitelik, geçerli kullanıcının Kullanıcı rolünde olup olmadığını denetler. Aksi takdirde bir özel durum oluşturulur.

    [PrincipalPermission(SecurityAction.Demand, Role = "User")]
    
  5. Aşağıdaki kodu Page_Load olay işleyicisinin gövdesine ekleyin. Bu, kodda ifade edilen taleple tamamen aynıdır.

    PrincipalPermission p = new PrincipalPermission(null, "User");
       p.Demand();
    
  6. Page_Load olayının gövdesine aşağıdaki kodu ekleyin. Önceki kodun aksine, bu kod bir özel durum oluşturmaz. Bunun yerine IsInRole, geçerli kullanıcının belirtilen role sahip olup olmadığını gösteren Boole değerini döndürür.

    if (!User.IsInRole("User"))
                    throw new SecurityException("Access is denied.");
    
  7. Tamamlanan kod aşağıdakine benzer görünmelidir.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using System.Security.Permissions;
    using System.Threading;
    using Microsoft.IdentityModel.Claims;
    using System.Security;
    
    namespace WebIsInRoleACS
    {
        public partial class _default : System.Web.UI.Page
        {
            //THIS SHOULD THROW AN EXCEPTION
            [PrincipalPermission(SecurityAction.Demand, Role = "User")]
            protected void Page_Load(object sender, EventArgs e)
            {
    
                //THIS SHOULD THROW AN EXCEPTION
                PrincipalPermission p = new PrincipalPermission(null, "User");
                p.Demand();
    
                //THIS RETURNS BOOL
                if (!User.IsInRole("User"))
                    throw new SecurityException("Access is denied.");
            }
        }
    }
    

4. Adım – Özel ClaimsAuthenticationManager Kullanarak Talep Dönüşümü Uygulama

Bu isteğe bağlı bir adımdır. Bu adım, 2. Adım – ACS'de Rol Beyanlarını Yapılandırma bölümünde açıklandığı gibi ACS'de çalışan talep dönüştürme kurallarının aksine, ASP.NET uygulaması bağlamında çalışan WIF işlem hattının bir parçası olan ClaimsAuthenticationManager kullanılarak taleplerin nasıl dönüştürüldüğünü gösterir.

Özel claimsAuthenticationManager kullanarak talep dönüştürmesini uygulamak için

  1. Sınıf Kitaplığı projesini Visual Studio Çözümüne ekleyin ve sonra buna myClaimsTransformationModule gibi bir ad verin.

  2. Microsoft.IdentityModel derlemesine bir başvuru ekleyin.

  3. System.IdentityModel derlemesine bir başvuru ekleyin.

  4. Yeni bir sınıf oluşturun ve sonra buna ClaimsTransformationModule gibi bir ad verin.

  5. Sınıfına aşağıdaki bildirimleri ekleyin.

    using Microsoft.IdentityModel.Claims;
    using System.Security.Principal;
    
  6. sınıfını ClaimsAuthenticationManager türünden türetin.

  7. Authenticate yöntemini geçersiz kılın (talep dönüştürme işlemi burada gerçekleşir). Authenticate yöntemi kodunuz aşağıdakilere dayalı olabilir.

    if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true)
    {
        //DECIDE ON SOME CRITERIA IF CURRENT USER DESERVES THE ROLE
        //IClaimsIdentity identity = (IClaimsIdentity)incomingPrincipal.Identity;
        ((IClaimsIdentity)incomingPrincipal.Identity).Claims.Add(
            new Claim(ClaimTypes.Role, "Admin"));
    }
    return incomingPrincipal;
    
  8. ASP.NET uygulamasına geçin ve web.config özel ClaimsAuthenticationManager'ınızı yapılandırın.

      <microsoft.identityModel>
        <service>
          <claimsAuthenticationManager type="MyClaimsTransformationModule.ClaimsTransformationModule, MyClaimsTransformationModule" />
    
  9. Oluşturduğunuz yeni derlemenin uygulama tarafından bulunduğundan emin olun; en basit yolu, uygulamanın bin klasörüne yerleştirmektir.

5. Adım – Çalışmanızı Test Edin

Bu adım, çözümün çalıştığının nasıl doğrulandığını gösterir. Çözümünüzü test etmek için F5 düğmesine basın. ASP.NET web uygulamanızın hata ayıklama modunda çalışması gerekir (Visual Studio içinde kod yürütmeyi doğrulamak için kesme noktaları ekleyebilirsiniz). İlk olarak, federasyon için yapılandırılmış kimlik sağlayıcısının kimlik doğrulama sayfasına yönlendirilirsiniz. Kimlik doğrulaması tamamlandıktan sonra, özel durum oluşturmadan Default.aspx sayfasına yeniden yönlendirilmelisiniz; bu da Kullanıcı rolü için tüm güvenlik taleplerinin karşılandığı anlamına gelir.