Aracılığıyla paylaş


AuthorizationContext Sınıf

Tanım

Yetkilendirme olayının bağlam bilgilerini sağlar. Bu, çağıranı temsil eden sorumluyu, istenen kaynağı ve gerçekleştirilmekte olan eylemi içerir.

public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
Devralma
AuthorizationContext

Örnekler

Konu başlığında AuthorizationContext kullanılan kod örneği örnekten Claims Based Authorization alınmıştır. Bu örnek, yapılandırmada belirtilen bir ilkeye göre konuları yetkilendirebilen özel talep yetkilendirme yöneticisi sağlar. Bu özel yönetici üç temel bileşenden ClaimsAuthorizationManager oluşur: yöneticiyi uygulayan bir sınıf, ResourceAction bir kaynakla eylemi eşleştiren sınıf ve yapılandırma dosyasında belirtilen ilkeyi okuyan ve derleyen bir ilke okuyucu. Bu derlenmiş ilke daha sonra talep yetkilendirme yöneticisi tarafından kaynaklara erişimi yetkilendirmek için bir sorumluyu değerlendirmek için kullanılabilir. Kısalık için tüm öğeler gösterilmez. Bu örnek ve WIF için kullanılabilen diğer örnekler ve bunların nereden indirileceği hakkında bilgi için bkz. WIF Kod Örneği Dizini.

Aşağıdaki kod, özel talep yetkilendirme yöneticisinin yöntemini gösterir CheckAccess . içinde belirtilen AuthorizationContext kaynak ve eyleme göre sorumluyu değerlendiren bir işlev çağrılır. Bu işlev, sorumluya erişim veren veya reddeden veya veya döndürür truefalse.

static Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>> _policies = new Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>>();
PolicyReader _policyReader = new PolicyReader();
    /// <summary>
    /// Checks if the principal specified in the authorization context is authorized to perform action specified in the authorization context 
    /// on the specified resoure
    /// </summary>
    /// <param name="pec">Authorization context</param>
    /// <returns>true if authorized, false otherwise</returns>
    public override bool CheckAccess(AuthorizationContext pec)
    {
        //
        // Evaluate the policy against the claims of the 
        // principal to determine access
        //
        bool access = false;
        try
        {
            ResourceAction ra = new ResourceAction(pec.Resource.First<Claim>().Value, pec.Action.First<Claim>().Value);

            access = _policies[ra](pec.Principal);
        }
        catch (Exception)
        {
            access = false;
        }

        return access;
    }
}

Aşağıdaki XML, yapılandırmada belirtilen yetkilendirme ilkesinin bir örneğini gösterir. İlk ilkede, belirtilen kaynakta belirtilen eylemi gerçekleştirmek için sorumlunun belirtilen taleplerden birine sahip olması gerekir. İkinci ilkede, sorumlunun belirtilen kaynakta belirtilen eylemi gerçekleştirebilmesi için her iki beyana da sahip olması gerekir. Diğer tüm durumlarda, sahip olduğu taleplerden bağımsız olarak sorumluya otomatik olarak erişim verilir.

<system.identityModel>
  <identityConfiguration>
    <claimsAuthorizationManager type="ClaimsAuthorizationLibrary.MyClaimsAuthorizationManager, ClaimsAuthorizationLibrary">
      <policy resource="http://localhost:28491/Developers.aspx" action="GET">
        <or>
          <claim claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" claimValue="developer" />
          <claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
        </or>
      </policy>
      <policy resource="http://localhost:28491/Administrators.aspx" action="GET">
        <and>
          <claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
          <claim claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country" claimValue="USA" />
        </and>
      </policy>
      <policy resource="http://localhost:28491/Default.aspx" action="GET">
      </policy>
      <policy resource="http://localhost:28491/" action="GET">
      </policy>
      <policy resource="http://localhost:28491/Claims.aspx" action="GET">
      </policy>
    </claimsAuthorizationManager>

    ...

  </identityConfiguration>
</system.identityModel>

Açıklamalar

sınıfı AuthorizationContext , bir sorumlunun (konu) belirli bir kaynakta belirtilen eylemi gerçekleştirme yetkisine sahip olup olmadığını belirlemek için sınıfının bir uygulaması ClaimsAuthorizationManager olan talep yetkilendirme yöneticisi tarafından kullanılan bağlamı temsil eder. Talep yetkilendirme yöneticisi yöntemdeki CheckAccess yetkilendirme bağlamını değerlendirir ve sorumlu tarafından sunulan taleplere göre erişimi reddeder veya verir.

Principal özelliği yetkilendirmenin istendiği sorumluyu Resource içerir, özelliği sorumlunun yetkilendirildiği kaynağı ve Action özelliği de sorumlunun kaynak üzerinde gerçekleştirmeyi amaçladığı eylemleri içerir. Hem kaynak hem de eylem bir talep koleksiyonu olarak temsil edilir; ancak çoğu durumda her koleksiyon tek bir talep içerir.

Oluşturucular

Name Description
AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>)

Belirtilen sorumlu, kaynak talebi ve eylem talebi ile sınıfının yeni bir örneğini AuthorizationContext başlatır.

AuthorizationContext(ClaimsPrincipal, String, String)

Sınıfın AuthorizationContext yeni bir örneğini belirtilen sorumlu, kaynak adı ve eylem adıyla başlatır.

Özellikler

Name Description
Action

Sorumlunun yetkilendirildiği eylemi alır.

Principal

Yetkilendirmenin istendiği sorumluyu (konu) alır.

Resource

Sorumlunun yetkilendirildiği kaynağı alır.

Yöntemler

Name Description
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır