Bagikan melalui


ServiceAuthorizationManager Kelas

Definisi

Menyediakan pemeriksaan akses otorisasi untuk operasi layanan.

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

Contoh

Contoh berikut menunjukkan kelas bernama MyServiceAuthorizationManager yang mewarisi dari ServiceAuthorizationManager dan mengambil CheckAccessCore alih metode .

public class MyServiceAuthorizationManager : ServiceAuthorizationManager
{
  protected override bool CheckAccessCore(OperationContext operationContext)
  {
    // Extract the action URI from the OperationContext. Match this against the claims
    // in the AuthorizationContext.
    string action = operationContext.RequestContext.RequestMessage.Headers.Action;
  
    // Iterate through the various claim sets in the AuthorizationContext.
    foreach(ClaimSet cs in operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets)
    {
      // Examine only those claim sets issued by System.
      if (cs.Issuer == ClaimSet.System)
      {
        // Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
          foreach (Claim c in cs.FindClaims("http://www.contoso.com/claims/allowedoperation", Rights.PossessProperty))
        {
          // If the Claim resource matches the action URI then return true to allow access.
          if (action == c.Resource.ToString())
            return true;
        }
      }
    }
  
    // If this point is reached, return false to deny access.
    return false;
  }
}

Public Class MyServiceAuthorizationManager
    Inherits ServiceAuthorizationManager
    
    Protected Overrides Function CheckAccessCore(ByVal operationContext As OperationContext) As Boolean 
        ' Extract the action URI from the OperationContext. Match this against the claims.
        ' in the AuthorizationContext.
        Dim action As String = operationContext.RequestContext.RequestMessage.Headers.Action
        
        ' Iterate through the various claimsets in the AuthorizationContext.
        Dim cs As ClaimSet
        For Each cs In  operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets
            ' Examine only those claim sets issued by System.
            If cs.Issuer Is ClaimSet.System Then
                ' Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
                Dim c As Claim
                For Each c In  cs.FindClaims("http://www.contoso.com/claims/allowedoperation", _
                     Rights.PossessProperty)
                    ' If the Claim resource matches the action URI then return true to allow access.
                    If action = c.Resource.ToString() Then
                        Return True
                    End If
                Next c
            End If
        Next cs 
        ' If this point is reached, return false to deny access.
        Return False
    
    End Function 
End Class

Keterangan

Kelas ini bertanggung jawab untuk mengevaluasi semua kebijakan (aturan yang menentukan apa yang diizinkan untuk dilakukan pengguna), membandingkan kebijakan dengan klaim yang dibuat oleh klien, mengatur hasilnya AuthorizationContext ke ServiceSecurityContext, dan memberikan keputusan otorisasi apakah akan mengizinkan atau menolak akses untuk operasi layanan tertentu untuk pemanggil.

Metode CheckAccessCore ini dipanggil oleh infrastruktur Windows Communication Foundation (WCF) setiap kali upaya untuk mengakses sumber daya dilakukan. Metode mengembalikan true atau false untuk mengizinkan atau menolak akses, masing-masing.

ServiceAuthorizationManager adalah bagian dari infrastrukturModel Identitas WCF. Model Identitas memungkinkan Anda membuat kebijakan otorisasi kustom dan skema otorisasi kustom. Untuk informasi selengkapnya tentang cara kerja Model Identitas, lihat Mengelola Klaim dan Otorisasi dengan Model Identitas.

Otorisasi Kustom

Kelas ini tidak melakukan otorisasi apa pun dan memungkinkan pengguna untuk mengakses semua operasi layanan. Untuk memberikan otorisasi yang lebih ketat, Anda harus membuat manajer otorisasi kustom yang memeriksa kebijakan kustom. Untuk melakukan ini, warisi dari kelas ini dan ambil alih CheckAccessCore metode . Tentukan instans kelas turunan ServiceAuthorizationManager melalui properti .

Dalam CheckAccessCore, aplikasi dapat menggunakan OperationContext objek untuk mengakses identitas pemanggil (ServiceSecurityContext).

Dengan mendapatkan IncomingMessageHeaders properti, yang mengembalikan MessageHeaders objek, aplikasi dapat mengakses layanan (To), dan operasi (Action).

Dengan mendapatkan RequestContext properti, yang mengembalikan RequestContext objek, aplikasi dapat mengakses seluruh pesan permintaan (RequestMessage) dan melakukan keputusan otorisasi yang sesuai.

Misalnya, lihat Cara: Membuat Manajer Otorisasi Kustom untuk Layanan.

Untuk membuat kebijakan otorisasi kustom, terapkan IAuthorizationPolicy kelas . Misalnya, lihat Cara: Membuat Kebijakan Otorisasi Kustom.

Untuk membuat klaim kustom, gunakan Claim kelas . Misalnya, lihat Cara: Membuat Klaim Kustom. Untuk membandingkan klaim kustom, Anda harus membandingkan klaim, seperti yang ditunjukkan dalam Cara: Membandingkan Klaim.

Untuk informasi selengkapnya, lihat Otorisasi Kustom.

Anda dapat mengatur jenis manajer otorisasi kustom menggunakan <serviceAuthorization> dalam file konfigurasi aplikasi klien.

Konstruktor

Nama Deskripsi
ServiceAuthorizationManager()

Menginisialisasi instans baru dari kelas ServiceAuthorizationManager.

Metode

Nama Deskripsi
CheckAccess(OperationContext, Message)

Memeriksa otorisasi untuk konteks operasi yang diberikan saat akses ke pesan diperlukan.

CheckAccess(OperationContext)

Memeriksa otorisasi untuk konteks operasi yang diberikan.

CheckAccessCore(OperationContext)

Memeriksa otorisasi untuk konteks operasi yang diberikan berdasarkan evaluasi kebijakan default.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetAuthorizationPolicies(OperationContext)

Mendapatkan serangkaian kebijakan yang berpartisipasi dalam evaluasi kebijakan.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Lihat juga