Compartilhar via


ServiceAuthorizationManager Classe

Definição

Fornece verificação de acesso de autorização para operações de serviço.

public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
Herança
ServiceAuthorizationManager

Exemplos

O exemplo a seguir mostra uma classe nomeada MyServiceAuthorizationManager que herda do ServiceAuthorizationManager método e substitui o CheckAccessCore método.

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

Comentários

Essa classe é responsável por avaliar todas as políticas (regras que definem o que um usuário tem permissão para fazer), comparar as políticas com declarações feitas por um cliente, definir o resultado AuthorizationContext para o ServiceSecurityContext, e fornecer a decisão de autorização se deseja permitir ou negar acesso a uma determinada operação de serviço para um chamador.

O CheckAccessCore método é chamado pela infraestrutura do WCF (Windows Communication Foundation) sempre que uma tentativa de acessar um recurso é feita. O método retorna true ou false permite ou nega o acesso, respectivamente.

Faz ServiceAuthorizationManager parte da infraestrutura do Modelo de Entidade WCFIdentity . O Modelo de Identidade permite que você crie políticas de autorização personalizadas e esquemas de autorização personalizados. Para obter mais informações sobre como o Modelo de Identidade funciona, consulte Como gerenciar declarações e autorização com o modelo de identidade.

Autorização personalizada

Essa classe não executa nenhuma autorização e permite que os usuários acessem todas as operações de serviço. Para fornecer uma autorização mais restritiva, você deve criar um gerenciador de autorização personalizado que verifique as políticas personalizadas. Para fazer isso, herde dessa classe e substitua o CheckAccessCore método. Especifique a instância da classe derivada por meio da ServiceAuthorizationManager propriedade.

In CheckAccessCore, o aplicativo pode usar o OperationContext objeto para acessar a identidade do chamador (ServiceSecurityContext).

Ao obter a IncomingMessageHeaders propriedade, que retorna um MessageHeaders objeto, o aplicativo pode acessar o serviço (To) e a operação (Action).

Ao obter a RequestContext propriedade, que retorna um RequestContext objeto, o aplicativo pode acessar toda a mensagem de solicitação (RequestMessage) e executar a decisão de autorização adequadamente.

Para obter um exemplo, consulte Como criar um Gerenciador de Autorização Personalizado para um Serviço.

Para criar políticas de autorização personalizadas, implemente a IAuthorizationPolicy classe. Para obter um exemplo, consulte Como criar uma política de autorização personalizada.

Para criar uma declaração personalizada, use a Claim classe. Para obter um exemplo, consulte Como criar uma declaração personalizada. Para comparar declarações personalizadas, você deve comparar declarações, conforme mostrado em Como comparar declarações.

Para obter mais informações, consulte Autorização Personalizada.

Você pode definir o tipo de um gerenciador de autorização personalizado usando o <serviceAuthorization> em um arquivo de configuração de aplicativo cliente.

Construtores

ServiceAuthorizationManager()

Inicializa uma nova instância da classe ServiceAuthorizationManager.

Métodos

CheckAccess(OperationContext)

Verifica a autorização para o contexto de operação fornecido.

CheckAccess(OperationContext, Message)

Verifica a autorização para o contexto de operação fornecido quando o acesso a uma mensagem é necessário.

CheckAccessCore(OperationContext)

Verifica a autorização para um determinado contexto de operação com base na avaliação de política padrão.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetAuthorizationPolicies(OperationContext)

Obtém o conjunto de políticas que participam de avaliação de políticas.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também