Autorizando o acesso a operações de serviço
Este exemplo demonstra como usar o <serviceAuthorization> para habilitar o uso do atributo para autorizar o PrincipalPermissionAttribute acesso a operações de serviço. Este exemplo é baseado no exemplo de Introdução . O serviço e o cliente são configurados usando o wsHttpBinding>.< O mode
atributo da< segurança> foi definido como Message
e clientCredentialType
foi definido como Windows
. O PrincipalPermissionAttribute é aplicado a cada método de serviço e usado para restringir o acesso a cada operação. O chamador deve ser um administrador do Windows para acessar cada operação.
Neste exemplo, o cliente é um aplicativo de console (.exe) e o serviço é hospedado pelo IIS (Serviços de Informações da Internet).
Nota
O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.
O arquivo de configuração de serviço usa o <serviceAuthorization> para definir o principalPermissionMode
atributo:
<behaviors>
<serviceBehaviors>
<behavior>
<!-- The serviceAuthorization behavior sets the
principalPermissionMode to UseWindowsGroups.
This puts a WindowsPrincipal on the current thread when a
service is invoked. -->
<serviceAuthorization principalPermissionMode="UseWindowsGroups" />
</behavior>
</serviceBehaviors>
</behaviors>
Definir o principalPermissionMode
para UseWindowsGroups
permite o uso de com base em nomes de grupo do PrincipalPermissionAttribute Windows.
O PrincipalPermissionAttribute é aplicado a cada operação para exigir que o chamador faça parte do grupo de administradores do Windows, conforme mostrado no código de exemplo a seguir.
[PrincipalPermission(SecurityAction.Demand,
Role = "Builtin\\Administrators")]
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}
Quando você executa o exemplo, as solicitações de operação e as respostas são exibidas na janela do console do cliente. O cliente se comunica com êxito com cada operação se ela estiver sendo executada em uma conta que faz parte do grupo Administradores; caso contrário, o acesso será negado. Para experimentar uma falha de autorização, execute o cliente em uma conta que não faça parte do grupo Administradores. Pressione ENTER na janela do console para desligar o cliente.
Um serviço pode ser notificado de falhas de autorização implementando um IErrorHandlerarquivo . Consulte Estendendo o controle sobre o tratamento de erros e relatórios para obter informações sobre a implementação IErrorHandler
do .
Para configurar, compilar e executar o exemplo
Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.
Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.
Para executar o exemplo em uma configuração de computador único ou entre computadores, siga as instruções em Executando os exemplos do Windows Communication Foundation.