Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe ServiceAuthorizationManager

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

System.Object
  System.ServiceModel.ServiceAuthorizationManager

Namespace:  System.ServiceModel
Assembly:  System.ServiceModel (em System.ServiceModel.dll)

public class ServiceAuthorizationManager

O tipo ServiceAuthorizationManager expõe os membros a seguir.

  NomeDescrição
Método públicoServiceAuthorizationManagerInicializa uma nova instância da classe ServiceAuthorizationManager.
Superior

  NomeDescrição
Método públicoCheckAccess(OperationContext)Verificações de autorização para o contexto de determinada operação.
Método públicoCheckAccess(OperationContext, Message)Verifica a autorização para o contexto de determinada operação quando é necessário o acesso a uma mensagem.
Método protegidoCheckAccessCoreVerifica a autorização para o contexto de determinada operação com base na avaliação da diretiva padrão.
Método públicoEquals(Object) Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método protegidoFinalize Permite um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)
Método protegidoGetAuthorizationPoliciesObtém o conjunto de diretivas que participam da avaliação da diretiva.
Método públicoGetHashCodeServe como a função de hash padrão. (Herdado de Object.)
Método públicoGetType Obtém o Type da instância atual. (Herdado de Object.)
Método protegidoMemberwiseCloneCria uma cópia superficial do Object atual. (Herdado de Object.)
Método públicoToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Superior

Essa classe é responsável por avaliar todas as diretivas (regras que definem o que um usuário tem permissão para fazer), comparando as diretivas para as declarações feitas por um cliente, definindo o resultante AuthorizationContext para o ServiceSecurityContexte fornecendo a decisão de autorização se deseja permitir ou negar acesso para uma operação de serviço específico para um chamador.

O CheckAccessCore método é chamado pelo Windows Communication Foundation (WCF) infra-estrutura cada vez que uma tentativa de acessar um recurso é feita. O método retorna true ou false para permitir ou negar acesso, respectivamente.

O ServiceAuthorizationManager faz parte do WCFModelo de identidade infra-estrutura. O modelo de identidade permite que você criar diretivas de autorização personalizada e esquemas de autorização personalizada. Para obter mais informações sobrecomo o modelo de identidade funciona, consulte Gerenciando declarações e autorização com o modelo de identidade.

Autorização personalizada

Esta classe não realiza todas as autorizações e permite que usuários acessem todas as operações de serviço. Para fornecer autorização mais restritiva, você deve criar uma autorização personalizada manager que verifica as diretivas personalizadas. Para fazer isso, herdar desta classe e substituir o CheckAccessCore método. Especificar a instância da classe derivada através do ServiceAuthorizationManager propriedade.

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

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

Obtendo o RequestContext propriedade, que retorna um RequestContext de objeto, o aplicativo pode acessar a mensagem de solicitação todo (RequestMessage) e realizar a decisão de autorização de acordo.

Para um exemplo, consulte Como: Crie um gerenciador personalizado de autorização para um serviço.

Para criar diretivas de autorização personalizada, implementar a IAuthorizationPolicy classe. Para um exemplo, consulte Como: Crie uma política personalizado de autorização.

Para criar uma declaração personalizada, use o Claim classe. Para um exemplo, consulte Como: Crie uma reivindicação personalizado. Para comparar as declarações personalizadas, você deve comparar reivindicações, conforme mostrado na Como: Compare declarações.

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

Você pode definir o tipo de um Gerenciador de autorização personalizada usando o Elemento <serviceAuthorization> em um arquivo de configuração de aplicativo do cliente.

O exemplo a seguir mostra uma classe chamada MyServiceAuthorizationManager que herda do ServiceAuthorizationManager e substitui a 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;                 
	}
  }


.NET Framework

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft