Partage via


ServiceAuthorizationManager Classe

Définition

Assure le contrôle d'accès des autorisations pour les opérations de service.

public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
Héritage
ServiceAuthorizationManager

Exemples

L'exemple suivant montre une classe appelée MyServiceAuthorizationManager qui hérite de ServiceAuthorizationManager et substitue la méthode CheckAccessCore.

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

Remarques

Cette classe est chargée d'évaluer toutes les stratégies (règles établissant ce qu'un utilisateur est autorisé à faire), de comparer les stratégies aux revendications d'un client, d'attribuer la valeur AuthorizationContext au ServiceSecurityContext résultant et de communiquer la décision d'autorisation autorisant ou refusant l'accès à une opération de service donnée par un appelant.

La CheckAccessCore méthode est appelée par l’infrastructure Windows Communication Foundation (WCF) chaque fois qu’une tentative d’accès à une ressource est effectuée. La méthode retourne la valeur true ou false afin d'autoriser ou de refuser l'accès, respectivement.

fait ServiceAuthorizationManager partie de l’infrastructure dumodèle d’identité WCF. Le modèle d'identité vous permet de créer des stratégies et schémas d'autorisation personnalisés. Pour plus d’informations sur le fonctionnement du modèle d’identité, consultez Gestion des revendications et des autorisations avec le modèle d’identité.

Autorisation personnalisée

Cette classe n'effectue pas de vérification des autorisations et autorise les utilisateurs à accéder à toutes les opérations de service. Si vous voulez limiter les autorisations, vous devez créer un gestionnaire d'autorisations personnalisé chargé de vérifier les stratégies personnalisées. Pour ce faire, héritez à partir de cette classe et remplacez la méthode CheckAccessCore. Spécifiez l'instance de la classe dérivée par le biais de la propriété ServiceAuthorizationManager.

Dans CheckAccessCore, l'application peut utiliser l'objet OperationContext pour accéder à l'identité de l'appelant (ServiceSecurityContext).

La propriété IncomingMessageHeaders, qui retourne un objet MessageHeaders, permet à l'application d'accéder au service (To) et à l'opération (Action).

La propriété RequestContext, qui retourne un objet RequestContext permet à l'application d'accéder à l'intégralité du message de demande (RequestMessage) et de prendre la décision d'autorisation en conséquence.

Pour obtenir un exemple, consultez How to: Create a Custom Authorization Manager for a Service.

Pour créer des stratégies d'autorisation personnalisées, implémentez la classe IAuthorizationPolicy. Pour obtenir un exemple, consultez Guide pratique pour créer une stratégie d’autorisation personnalisée.

Pour créer une revendication personnalisée, utilisez la classe Claim. Pour obtenir un exemple, consultez Guide pratique pour créer une revendication personnalisée. Pour comparer des revendications personnalisées, vous devez comparer les revendications, comme indiqué dans Guide pratique pour comparer les revendications.

Pour plus d’informations, consultez Autorisation personnalisée.

Vous pouvez définir le type d’un gestionnaire d’autorisations personnalisé à l’aide de serviceAuthorization<> dans un fichier de configuration d’application cliente.

Constructeurs

ServiceAuthorizationManager()

Initialise une nouvelle instance de la classe ServiceAuthorizationManager.

Méthodes

CheckAccess(OperationContext)

Vérifie l'autorisation pour le contexte d'opération donné.

CheckAccess(OperationContext, Message)

Vérifie l'autorisation pour le contexte d'opération donné lorsque l'accès à un message est requis.

CheckAccessCore(OperationContext)

Vérifie l'autorisation pour le contexte d'opération donné selon l'évaluation de la stratégie par défaut.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetAuthorizationPolicies(OperationContext)

Obtient l'ensemble des stratégies intervenant dans l'évaluation de la stratégie.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Voir aussi