Compartilhar via


Autorização de 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 às 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 atributo mode da <segurança> foi definido para Message e clientCredentialType foi definido para Windows. O PrincipalPermissionAttribute método é 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.

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 build para este exemplo estão localizados no final deste tópico.

O arquivo de configuração de serviço usa a <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 a opção principalPermissionMode para UseWindowsGroups habilita o uso de PrincipalPermissionAttribute com base em nomes de grupo do Windows.

Ela PrincipalPermissionAttribute é aplicada 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 e respostas da operação 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 faz 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 sobre falhas de autorização implementando um IErrorHandler. Consulte Estendendo o controle sobre tratamento de erros e relatórios para obter informações sobre a implementação IErrorHandler.

Para configurar, compilar e executar o exemplo

  1. Verifique se você executou o Procedimento de instalação avulsa dos exemplos do Windows Communication Foundation.

  2. 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.

  3. Para executar o exemplo em uma configuração de computador único ou cruzado, siga as instruções em Executar os exemplos do Windows Communication Foundation.