ServiceAuthorizationManager.CheckAccessCore(OperationContext) Metode
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.
Memeriksa otorisasi untuk konteks operasi yang diberikan berdasarkan evaluasi kebijakan default.
protected:
virtual bool CheckAccessCore(System::ServiceModel::OperationContext ^ operationContext);
protected virtual bool CheckAccessCore (System.ServiceModel.OperationContext operationContext);
abstract member CheckAccessCore : System.ServiceModel.OperationContext -> bool
override this.CheckAccessCore : System.ServiceModel.OperationContext -> bool
Protected Overridable Function CheckAccessCore (operationContext As OperationContext) As Boolean
Parameter
- operationContext
- OperationContext
OperationContext untuk permintaan otorisasi saat ini.
Mengembalikan
true
jika akses diberikan; jika tidak, false
. Defaultnya adalah true
.
Contoh
Contoh berikut menunjukkan pengambilalihan metode CheckAccessCore.
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;
}
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
Untuk contoh lain, lihat Cara: Membuat Manajer Otorisasi Kustom untuk Layanan.
Keterangan
ServiceSecurityContext umumnya merupakan hasil dari evaluasi kebijakan default.
Ambil alih metode ini untuk memberikan keputusan otorisasi kustom.
Metode ini dapat digunakan untuk membuat keputusan otorisasi berdasarkan kumpulan klaim yang disimpulkan berdasarkan token masuk, atau ditambahkan melalui kebijakan otorisasi eksternal. Ini juga dapat membuat keputusan otorisasi berdasarkan properti pesan masuk: misalnya, header tindakan.
Dalam metode ini, aplikasi dapat menggunakan operationContext
parameter untuk mengakses identitas pemanggil (ServiceSecurityContext). Dengan mengembalikan RequestContext objek dari RequestContext properti , aplikasi dapat mengakses seluruh pesan permintaan (RequestMessage). Dengan mengembalikan MessageHeaders objek dari IncomingMessageHeaders properti , aplikasi dapat mengakses URL layanan (To) dan operasi (Action). Dengan informasi ini, aplikasi dapat melakukan keputusan otorisasi yang sesuai.
Klaim yang dibuat oleh pengguna ditemukan di yang ClaimSet dikembalikan oleh ClaimSets properti dari AuthorizationContext
. Saat ini AuthorizationContext
dikembalikan oleh ServiceSecurityContext properti OperationContext kelas .