ServiceAuthorizationManager Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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) |