Partilhar via


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

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

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

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