Share via


Mecanismos de controle de acesso

Você pode controlar o acesso de várias formas com o WCF (Windows Communication Foundation). Este tópico discute resumidamente 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 estão listadas em ordem de complexidade. A mais simples é PrincipalPermissionAttribute; a mais complexa é 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 função ASP.NET. Se o cliente for autenticado usando um certificado X.509, ele terá 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 fizerem parte do mesmo domínio do Windows no qual o serviço está sendo executado. Você pode criar facilmente grupos do Windows que tenham níveis especificados de acesso (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 Class. Para obter mais informações sobre identidade, consulte Identidade de serviço e autenticação.

Provedor de associação de 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 poderá usar o recurso de associação se já tiver um banco de dados de associação de um site de ASP.NET existente e quiser permitir que os mesmos usuários usem seu serviço, autorizado 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 do ASP.NET.

Provedor de função do ASP.NET

Outro recurso do 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 poderá usar o provedor de função do ASP.NET se tiver um banco de dados existente do provedor de função do ASP.NET 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 utilizar o provedor de função do ASP.NET com um serviço.

Gerenciador de Autorização

Outro recurso combina o AzMan (Gerenciador de Autorização) com o provedor de função do 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. O gerenciador de funções do ASP.NET 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 das 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 MMC (Console de Gerenciamento Microsoft) de administração do AzMan permite que os administradores alterem as tarefas que uma função pode executar no tempo de execução e gerenciem a associação de funções de cada usuário.

Você também poderá usar o AzMan e o provedor de função do 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ção do ASP.NET, consulte Como: Usar o Gerenciador de Autorização (AzMan) com o 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ção do Gerenciador de Autorização do 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 cada declaração contida em 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 um controle fino e a capacidade de definir critérios específicos antes de conceder acesso. Por exemplo, ao usar o PrincipalPermissionAttribute, o critério é simplesmente que a identidade do usuário seja autenticada e pertença a uma função específica. Por outro lado, usando o Modelo de identidade, você pode criar uma política que afirma 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 em que você pode se beneficiar do controle de acesso baseado em declaração do Modelo de identidade é ao usar credenciais de federação no cenário de token emitido. 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, confira Gerenciando declarações e autorização com o modelo de identidade.

Confira também