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 seguinte mostra uma classe nomeada MyServiceAuthorizationManager que herda de e ServiceAuthorizationManager sobrepõe 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

Observações

Esta classe é responsável por avaliar todas as políticas (regras que definem o que um utilizador pode fazer), comparar as políticas com reivindicações feitas por um cliente, definir o resultado AuthorizationContext para , ServiceSecurityContexte fornecer a decisão de autorização sobre permitir ou negar o acesso a uma dada operação de serviço para um chamador.

O método CheckAccessCore é chamado pela infraestrutura Windows Communication Foundation (WCF) sempre que se tenta aceder a um recurso. O método retorna true ou false permite ou recusa o acesso, respetivamente.

Faz ServiceAuthorizationManager parte da infraestruturado Modelo de Identidade WCF. O Identity Model permite-lhe criar políticas de autorização personalizadas e esquemas de autorização personalizados. Para mais informações sobre como funciona o Modelo de Identidade, consulte Gestão de Reclamações e Autorização com o Modelo de Identidade.

Autorização personalizada

Esta classe não realiza qualquer autorização e permite aos utilizadores aceder a todas as operações do serviço. Para fornecer autorizações mais restritivas, deve criar um gestor de autorizações personalizado que verifique políticas personalizadas. Para isso, herda desta classe e sobrepõe o CheckAccessCore método. Especifique a instância da classe derivada através da ServiceAuthorizationManager propriedade.

Em CheckAccessCore, a aplicação pode usar o OperationContext objeto para aceder à identidade do chamador (ServiceSecurityContext).

Ao obter a IncomingMessageHeaders propriedade que devolve um MessageHeaders objeto, a aplicação pode aceder ao serviço (To), e à operação (Action).

Ao obter a RequestContext propriedade, que devolve um RequestContext objeto, a aplicação pode aceder a toda a mensagem de pedido (RequestMessage) e executar a decisão de autorização em conformidade.

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 um exemplo, veja Como: Criar uma Política de Autorização Personalizada.

Para criar uma reivindicação personalizada, use a Claim classe. Para um exemplo, veja Como: Criar uma Reivindicação Personalizada. Para comparar reclamações personalizadas, deve comparar reclamações, conforme mostrado em Como: Comparar Reclamações.

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

Pode definir o tipo de gestor de autorizações personalizado usando o <serviceAuthorization> num ficheiro de configuração de uma aplicação cliente.

Construtores

Name Description
ServiceAuthorizationManager()

Inicializa uma nova instância da ServiceAuthorizationManager classe.

Métodos

Name Description
CheckAccess(OperationContext, Message)

Verifica a autorização para o contexto operacional dado quando é necessário acesso a uma mensagem.

CheckAccess(OperationContext)

Verifica a autorização para o contexto operacional dado.

CheckAccessCore(OperationContext)

Verifica a autorização para o contexto operacional dado com base na avaliação padrão da política.

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 na avaliação de políticas.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também