Autorizando o acesso às operações de serviço
Este exemplo demonstra como usar o <serviceAuthorization> para habilitar o uso do atributo PrincipalPermissionAttribute para autorizar o acesso a operações de serviço. Este exemplo é baseado na amostra Introdução. O serviço e o cliente são configurados usando o <wsHttpBinding>. O atributo mode
da <segurança> foi definido como Message
e clientCredentialType
foi definido como Windows
. O PrincipalPermissionAttribute é aplicado a cada método de serviço e usada para restringir o acesso a cada operação. O chamador deve ser um administrador do Windows para acessar cada operação.
Nesta amostra, o cliente é um aplicativo de console (.exe) e o serviço é hospedado pelos Serviços de Informações da Internet (IIS).
Observação
O procedimento de instalação e as instruções de compilação dessa amostra estão no final deste tópico.
O arquivo de configuração de serviço usa o <serviceAuthorization> para definir o atributo principalPermissionMode
:
<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 a opção principalPermissionMode
para UseWindowsGroups
habilita o uso de PrincipalPermissionAttribute com base em nomes de grupo do 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 a amostra, 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 estiver em execução em uma conta que faça parte do grupo Administradores; caso contrário, o acesso será negado. Para experimentar a falha de autorização, execute o cliente em uma conta que não faz 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 IErrorHandler. Confira Estendendo o controle sobre o tratamento e relatório de erros para obter mais informações sobre a implementação de IErrorHandler
.
Para configurar, compilar, e executar o exemplo
Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.
Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.
Para executar o exemplo em uma configuração de computador único ou entre computadores, siga as instruções em Como executar os exemplos do Windows Communication Foundation.