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ştirilen eylemi içerir.

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

Örnekler

Konuda kullanılan AuthorizationContext kod örneği örnekten Claims Based Authorization alını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öneticisini 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şim yetkisi vermek üzere 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 eylem temelinde sorumluyu değerlendiren bir işlev çağrılır. Bu işlev, sorumluya erişim veren veya erişimi reddeden veya falsedöndürürtrue.

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 olmayacağı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 yetkilendirme bağlamını CheckAccess değerlendirir ve sorumlu tarafından sunulan taleplere göre erişimi reddeder veya verir.

Principal özelliği yetkilendirmenin istendiği sorumluyu içerir, Resource özelliği sorumlunun yetkilendirildiği kaynağı ve özelliği de Action 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

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)

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

Özellikler

Action

Sorumlunun yetkilendirildiği eylemi alır.

Principal

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

Resource

Sorumlunun yetkilendirildiği kaynağı alır.

Yöntemler

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()

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

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

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

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

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

(Devralındığı yer: Object)

Şunlara uygulanır