ServiceAuthorizationManager Sınıf
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.
Hizmet işlemleri için yetkilendirme erişim denetimi sağlar.
public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
- Devralma
-
ServiceAuthorizationManager
Örnekler
Aşağıdaki örnekte, öğesinden ServiceAuthorizationManager devralan ve yöntemini geçersiz kılan adlı MyServiceAuthorizationManager bir sınıf gösterilmektedirCheckAccessCore.
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
Açıklamalar
Bu sınıf, tüm ilkeleri (kullanıcının ne yapmaya izni olduğunu tanımlayan kurallar) değerlendirmekten, ilkeleri bir istemci tarafından yapılan taleplerle karşılaştırmaktan, sonucu AuthorizationContext olarak ServiceSecurityContextayarlamak ve çağıran için belirli bir hizmet işlemi için erişime izin verilip verilmeyeceğinin yetkilendirme kararını vermekten sorumludur.
Yöntemi CheckAccessCore , bir kaynağa her erişim girişiminde bulunulduğında Windows Communication Foundation (WCF) altyapısı tarafından çağrılır. yöntemi, sırasıyla erişime izin vermek veya erişimi reddetmek için veya döndürür truefalse .
ServiceAuthorizationManager, WCFKimlik Modeli altyapısının bir parçasıdır. Kimlik Modeli, özel yetkilendirme ilkeleri ve özel yetkilendirme düzenleri oluşturmanıza olanak tanır. Kimlik Modelinin nasıl çalıştığı hakkında daha fazla bilgi için bkz. Kimlik Modeli ile Talepleri ve Yetkilendirmeyi Yönetme.
Özel Yetkilendirme
Bu sınıf herhangi bir yetkilendirme gerçekleştirmez ve kullanıcıların tüm hizmet işlemlerine erişmesine izin verir. Daha kısıtlayıcı yetkilendirme sağlamak için, özel ilkeleri denetleen bir özel yetkilendirme yöneticisi oluşturmanız gerekir. Bunu yapmak için bu sınıftan devralın ve yöntemini geçersiz kılın CheckAccessCore . özelliği aracılığıyla türetilmiş sınıfın örneğini ServiceAuthorizationManager belirtin.
uygulamasındaCheckAccessCore, uygulama çağıran kimliğine (ServiceSecurityContext ) erişmek için nesnesini kullanabilirOperationContext.
Bir nesne döndüren özelliğini alarak IncomingMessageHeaders uygulama hizmete (To) ve işleme (Action) MessageHeaders erişebilir.
Bir nesne döndüren RequestContext özelliğini alarakRequestContext, uygulama istek iletisinin tamamına (RequestMessage) erişebilir ve yetkilendirme kararını buna göre gerçekleştirebilir.
Örnek için bkz . Nasıl yapılır: Hizmet için Özel Yetkilendirme Yöneticisi Oluşturma.
Özel yetkilendirme ilkeleri oluşturmak için sınıfını IAuthorizationPolicy uygulayın. Örnek için bkz . Nasıl yapılır: Özel Yetkilendirme İlkesi Oluşturma.
Özel talep oluşturmak için sınıfını Claim kullanın. Bir örnek için bkz . Nasıl yapılır: Özel Talep Oluşturma. Özel talepleri karşılaştırmak için, Nasıl yapılır: Talepleri Karşılaştırma bölümünde gösterildiği gibi talepleri karşılaştırmanız gerekir.
Daha fazla bilgi için bkz. Özel Yetkilendirme.
bir istemci uygulaması yapılandırma dosyasında serviceAuthorization> kullanarak< özel yetkilendirme yöneticisinin türünü ayarlayabilirsiniz.
Oluşturucular
| Name | Description |
|---|---|
| ServiceAuthorizationManager() |
ServiceAuthorizationManager sınıfının yeni bir örneğini başlatır. |
Yöntemler
| Name | Description |
|---|---|
| CheckAccess(OperationContext, Message) |
bir iletiye erişim gerektiğinde verilen işlem bağlamı için yetkilendirmeyi denetler. |
| CheckAccess(OperationContext) |
Verilen işlem bağlamı için yetkilendirmeyi denetler. |
| CheckAccessCore(OperationContext) |
Varsayılan ilke değerlendirmesine göre verilen işlem bağlamı için yetkilendirmeyi denetler. |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetAuthorizationPolicies(OperationContext) |
İlke değerlendirmesine katılan ilke kümesini alır. |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |