Compartilhar via


Mecanismos de controle de acesso

Você pode controlar o acesso de várias maneiras com o Windows Communication Foundation (WCF). Este tópico discute brevemente os vários mecanismos e fornece sugestões sobre quando usar cada um; ele se destina a ajudá-lo a selecionar o mecanismo correto a ser usado. As tecnologias de acesso são listadas em ordem de complexidade. O mais simples é o PrincipalPermissionAttribute; o mais complexo é o Modelo de Identidade.

Além desses mecanismos, a representação e a delegação com o WCF são explicadas em Delegação e representação.

PrincipalPermissionAttribute

O PrincipalPermissionAttribute é usado para restringir o acesso a um método de serviço. Quando o atributo é aplicado a um método, ele pode ser usado para exigir a identidade ou a associação de um chamador específico em um grupo do Windows ou ASP.NET função. Se o cliente for autenticado usando um certificado X.509, ele recebe uma identidade primária que consiste no nome da entidade mais a impressão digital do certificado.

Use o PrincipalPermissionAttribute para controlar o acesso aos recursos no computador em que o serviço está sendo executado, e se os usuários do serviço sempre farão parte do mesmo domínio do Windows em que o serviço está sendo executado. Você pode criar facilmente grupos do Windows que tenham níveis de acesso especificados (como nenhum, somente leitura ou leitura e gravação).

Para obter mais informações sobre como usar o atributo, consulte Como restringir o acesso com a classe PrincipalPermissionAttribute. Para obter mais informações sobre identidade, consulte Identidade e Autenticação do Serviço.

Provedor de associação ASP.NET

Um recurso de ASP.NET é o provedor de associação. Embora o provedor de associação não seja tecnicamente um mecanismo de controle de acesso, ele permite controlar o acesso ao serviço limitando o conjunto de possíveis identidades que podem acessar o ponto de extremidade do serviço. O recurso de associação inclui um banco de dados que pode ser preenchido com combinações de nome de usuário/senha que permitem aos usuários de um site estabelecer contas com o site. Para acessar um serviço que usa o provedor de associação, um usuário deve fazer logon com seu nome de usuário e senha.

Observação

Primeiro, você deve preencher o banco de dados usando o recurso ASP.NET antes que um serviço WCF possa usá-lo para fins de autorização.

Você também pode usar o recurso de associação se já tiver um banco de dados de associação de um site ASP.NET existente e quiser permitir que os mesmos usuários usem seu serviço, autorizados com os mesmos nomes de usuário e senhas.

Para obter mais informações sobre como usar o recurso de associação em um serviço WCF, consulte Como usar o provedor de associação ASP.NET.

Provedor de função ASP.NET

Outro recurso de ASP.NET é a capacidade de gerenciar a autorização usando funções. O provedor de função ASP.NET permite que um desenvolvedor crie funções para os usuários e atribua cada usuário a uma função ou funções. Assim como acontece com o provedor de associação, as funções e as atribuições são armazenadas em um banco de dados e podem ser preenchidas usando ferramentas fornecidas por uma implementação específica do provedor de funções ASP.NET. Assim como acontece com o recurso de associação, os desenvolvedores do WCF podem usar as informações no banco de dados para autorizar usuários de serviço por funções. Eles podem, por exemplo, usar o provedor de função em combinação com o mecanismo de controle de acesso PrincipalPermissionAttribute descrito acima.

Você também pode usar o provedor de função ASP.NET se tiver um banco de dados de provedor de função ASP.NET existente e quiser usar o mesmo conjunto de regras e atribuições de usuário em seu serviço WCF.

Para obter mais informações sobre como usar o recurso de provedor de função, consulte Como usar o provedor de função ASP.NET com um serviço.

Gestor de Autorizações

Outro recurso combina o Gerenciador de Autorização (AzMan) com o provedor de funções ASP.NET para autorizar clientes. Quando ASP.NET hospeda um serviço Web, o AzMan pode ser integrado ao aplicativo para que a autorização para o serviço seja feita por meio do AzMan. ASP.NET gerenciador de funções fornece uma API que permite gerenciar funções de aplicativo, adicionar e remover usuários de funções e verificar a associação de função, mas não permite que você consulte se um usuário está autorizado a executar uma tarefa ou operação nomeada. O AzMan permite definir operações individuais e combiná-las em tarefas. Com o AZMan, além de verificações de função, você também pode verificar se um usuário pode executar uma tarefa. A atribuição de função e a autorização de tarefa podem ser configuradas fora do aplicativo ou executadas programaticamente dentro do aplicativo. O snap-in do Microsoft Management Console (MMC) de administração do AzMan permite que os administradores alterem as tarefas que uma função pode executar em runtime e gerenciem a associação de cada usuário às funções.

Você também pode usar o AzMan e o provedor de funções ASP.NET se já tiver acesso a uma instalação existente do AzMan e quiser autorizar seus usuários de serviço usando os recursos da combinação de provedor de função/AzMan.

Para obter mais informações sobre o AzMan e o provedor de funções ASP.NET, consulte How To: Use Authorization Manager (AzMan) with ASP.NET 2.0. Para obter mais informações sobre como usar o AzMan e o provedor de funções para serviços WCF, consulte Como usar o provedor de funções do Gerenciador de Autorização ASP.NET com um serviço.

Modelo de identidade

O Modelo de Identidade é um conjunto de APIs que permitem gerenciar declarações e políticas para autorizar clientes. Com o Modelo de Identidade, você pode examinar todas as declarações contidas nas credenciais que o chamador usou para se autenticar no serviço, comparar as declarações com o conjunto de políticas do serviço e conceder ou negar acesso com base na comparação.

Use o Modelo de Identidade se precisar de controle fino e a capacidade de definir critérios específicos antes de conceder acesso. Por exemplo, ao usar o PrincipalPermissionAttributecritério, o critério é simplesmente que a identidade do usuário é autenticada e pertence a uma função específica. Por outro lado, usando o Modelo de Identidade, você pode criar uma política que indica que o usuário deve ter mais de 18 anos e possui uma carteira de motorista válida antes de ter permissão para exibir um documento.

Um exemplo de como você pode se beneficiar do modelo de identidade com controle de acesso baseado em declarações é ao usar credenciais de federação no cenário de emissão de tokens. Para obter mais informações sobre federação e tokens emitidos, consulte Federação e Tokens Emitidos.

Para obter mais informações sobre o modelo de identidade, consulte Gerenciando declarações e autorização com o modelo de identidade.

Consulte também