Bagikan melalui


AuthorizationContext Kelas

Definisi

Menyediakan informasi konteks peristiwa otorisasi. Ini termasuk prinsipal yang mewakili pemanggil, sumber daya yang diminta, dan tindakan yang sedang dilakukan.

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

Contoh

Contoh kode yang digunakan dalam AuthorizationContext topik diambil dari Claims Based Authorization sampel. Sampel ini menyediakan manajer otorisasi klaim kustom yang dapat mengotorisasi subjek berdasarkan kebijakan yang ditentukan dalam konfigurasi. Manajer kustom ini terdiri dari tiga komponen dasar: kelas yang berasal dari ClaimsAuthorizationManager yang mengimplementasikan manajer, ResourceAction kelas yang memasangkan sumber daya dan tindakan, dan pembaca kebijakan yang membaca dan mengkompilasi kebijakan yang ditentukan dalam file konfigurasi. Kebijakan yang dikompilasi ini kemudian dapat digunakan oleh manajer otorisasi klaim untuk mengevaluasi prinsipal untuk mengotorisasi akses ke sumber daya. Tidak semua elemen ditampilkan demi keringkasan. Untuk informasi tentang sampel ini dan sampel lain yang tersedia untuk WIF dan tentang tempat mengunduhnya, lihat Indeks Sampel Kode WIF.

Kode berikut menunjukkan CheckAccess metode untuk manajer otorisasi klaim kustom. Fungsi yang mengevaluasi prinsipal berdasarkan sumber daya dan tindakan yang ditentukan dalam AuthorizationContext dipanggil. Fungsi ini mengembalikan atau truefalse, yang memberikan atau menolak akses ke prinsipal.

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;
    }
}

XML berikut menunjukkan contoh kebijakan otorisasi yang ditentukan dalam konfigurasi. Dalam kebijakan pertama, prinsipal harus memiliki salah satu klaim yang ditentukan untuk melakukan tindakan yang ditentukan pada sumber daya yang ditentukan. Dalam kebijakan kedua, prinsipal harus memiliki kedua klaim untuk dapat melakukan tindakan yang ditentukan pada sumber daya yang ditentukan. Dalam semua yang lain, prinsipal secara otomatis diberikan akses terlepas dari klaim yang dimilikinya.

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

Keterangan

Kelas AuthorizationContext mewakili konteks yang digunakan oleh manajer otorisasi klaim, implementasi ClaimsAuthorizationManager kelas, untuk menentukan apakah prinsipal (subjek) harus diberi wewenang untuk melakukan tindakan tertentu pada sumber daya tertentu. Manajer otorisasi klaim mengevaluasi konteks otorisasi dalam CheckAccess metode dan menolak atau memberikan akses berdasarkan klaim yang disajikan oleh prinsipal.

Properti Principal berisi prinsipal yang otorisasinya diminta, Resource properti berisi sumber daya tempat prinsipal diotorisasi, dan Action properti berisi tindakan yang ingin dilakukan prinsipal pada sumber daya. Baik sumber daya maupun tindakan direpresentasikan sebagai kumpulan klaim; namun, dalam kebanyakan kasus, setiap koleksi berisi satu klaim.

Konstruktor

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

Menginisialisasi instans AuthorizationContext baru kelas dengan prinsipal, klaim sumber daya, dan klaim tindakan yang ditentukan.

AuthorizationContext(ClaimsPrincipal, String, String)

Menginisialisasi instans AuthorizationContext baru kelas dengan prinsipal, nama sumber daya, dan nama tindakan yang ditentukan.

Properti

Action

Mendapatkan tindakan di mana prinsipal akan diotorisasi.

Principal

Mendapatkan prinsipal (subjek) yang otorisasinya diminta.

Resource

Mendapatkan sumber daya tempat prinsipal akan diotorisasi.

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk