ServiceAuthorizationManager.CheckAccessCore(OperationContext) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Varsayılan ilke değerlendirmesine göre verilen işlem bağlamı için yetkilendirmeyi denetler.
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
Parametreler
- operationContext
- OperationContext
OperationContext Geçerli yetkilendirme isteği için.
Döndürülenler
true
erişim verilirse; aksi takdirde , false
. Varsayılan değer: true
.
Örnekler
Aşağıdaki örnekte yönteminin geçersiz kılması gösterilmektedir 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
Başka bir örnek için bkz . Nasıl yapılır: Hizmet için Özel Yetkilendirme Yöneticisi Oluşturma.
Açıklamalar
ServiceSecurityContext genellikle varsayılan ilke değerlendirmesinin sonucudur.
Özel yetkilendirme kararları sağlamak için bu yöntemi geçersiz kılın.
Bu yöntem, gelen belirteçlere göre çıkarılacak talep kümelerini temel alarak yetkilendirme kararları almak veya dış yetkilendirme ilkeleri aracılığıyla eklemek için kullanılabilir. Ayrıca, gelen iletinin özelliklerine göre yetkilendirme kararları da verebilir: örneğin, eylem üst bilgisi.
Bu yöntemde, uygulama çağıran kimliğine (ServiceSecurityContext ) erişmek için parametresini kullanabiliroperationContext
. Özelliğinden RequestContext nesnesini döndürerekRequestContext, uygulama istek iletisinin tamamına (RequestMessage ) erişebilir. Özelliğinden nesnesini döndürerek MessageHeaders uygulama hizmet URL'sine (To) ve işlemine (Action) erişebilir.IncomingMessageHeaders Bu bilgilerle uygulama yetkilendirme kararını buna göre gerçekleştirebilir.
Bir kullanıcı tarafından yapılan talepler, özelliği AuthorizationContext
tarafından ClaimSets döndürülen içinde ClaimSet bulunur. currentAuthorizationContext
, sınıfının özelliği OperationContext tarafından ServiceSecurityContext döndürülür.