Quando usar a delegação de identidade

O que é a delegação de identidade?

A delegação de identidade é um recurso dos Serviços de Federação do Active Directory (AD FS) que permite que as contas especificadas pelo administrador representem os usuários. A conta que representa o usuário é chamada de Representante. Essa capacidade de delegação é essencial para muitos aplicativos distribuídos para os quais há uma série de verificações de controle de acesso que devem ser feitas em sequência para cada aplicativo, banco de dados ou serviço que está na cadeia de autorização da solicitação de origem. Há muitos cenários do mundo real em que um "front-end" de aplicativo Web deve recuperar os dados de um "back-end" mais seguro, como um serviço Web conectado a um banco de dados do Microsoft SQL Server.

Por exemplo, um site existente de pedidos de peças pode ser aprimorado por meio de programação para permitir que as organizações parceiras exibam seu próprio histórico de compra e o status de sua conta. Por motivos de segurança, todos os dados financeiros do parceiro são armazenados em um banco de dados seguro em um servidor dedicado de SQL (Structured Query Language). Nessa situação, o código no aplicativo front-end não tem informações sobre os dados financeiros da organização do parceiro. Portanto, ele deve recuperar esses dados de outro computador em outro local da rede que hospeda (nesse caso) o serviço Web para o banco de dados de peças (o back-end).

Para que esse processo de recuperação de dados tenha êxito, deverá ocorrer alguma sucessão de "aprovação" da autorização entre o aplicativo Web e o serviço Web para o banco de dados de peças, conforme exibido na ilustração a seguir.

identity delegation

Já que a solicitação original foi feita para o próprio servidor Web, que pode estar localizado em uma organização completamente diferente da organização do usuário que está tentando acessar o servidor Web, o token de segurança que é enviado junto com a solicitação não atende aos critérios de autorização necessários para acessar qualquer outro computador além do servidor Web. Portanto, a única maneira pela qual a solicitação do usuário de origem pode ser atendida é colocando um servidor de federação intermediário na organização parceira de recursos para ajudar na reemissão de um token de segurança que tem privilégios de acesso adequados.

Como funciona a delegação de identidade?

Muitas vezes, os aplicativos Web localizados em arquiteturas de aplicativos com várias camadas chamam serviços Web para acessar dados ou funcionalidades comuns. É importante que esses serviços Web saibam a identidade do usuário original para que o serviço possa tomar decisões de autorização e facilitar a auditoria. Nesse caso, o aplicativo Web front-end representa o usuário para o serviço Web como um representante. O AD FS facilita esse cenário permitindo que as contas do Active Directory atuem como um usuário para outra terceira parte confiável. Um cenário de delegação de identidade é exibido na ilustração a seguir.

Illustration that shows an identity delegation scenario.

  1. Frank tenta acessar o histórico de pedidos de peças por meio de um aplicativo Web em outra organização. O computador cliente solicita e recebe um token do AD FS para o aplicativo Web front-end de ordenação de peças.

  2. O computador cliente envia uma solicitação ao aplicativo Web, incluindo o token obtido na etapa 1, para provar a identidade do cliente.

  3. O aplicativo Web precisa se comunicar com o serviço Web para concluir a sua transação para o cliente. O aplicativo Web contata o AD FS para obter um token de delegação para interagir com o serviço Web. Os tokens de delegação são tokens de segurança que são emitidos para que um representante atue como um usuário. O AD FS retorna um token de delegação com declarações sobre o cliente, direcionado para o serviço Web.

  4. O aplicativo Web usa o token obtido do AD FS na etapa 3 para acessar o serviço Web que está atuando como cliente. Examinando o token de delegação, o serviço Web pode determinar que o aplicativo Web está atuando como o cliente. O serviço Web executa sua política de autorização, registra a solicitação e fornece os dados necessários de histórico de peças que foram solicitados originalmente pelo Frank ao aplicativo Web e, portanto, ao Frank.

Para um representante específico, o AD FS pode limitar os serviços Web para os quais o aplicativo Web poderá solicitar um token de delegação. O computador cliente não precisa ter uma conta do Active Directory para que essa operação seja bem-sucedida. Finalmente, conforme observado anteriormente, o serviço Web pode facilmente determinar a identidade do representante que está atuando como o usuário. Isso permite que os serviços Web exibam um comportamento diferente com base no fato de estarem se comunicando diretamente com o computador cliente ou por meio de um representante.

Configurando o AD FS para delegação de identidade

É possível usar o snap-in Gerenciamento do AD FS para configurar o AD FS para delegação de identidade sempre que for necessário facilitar o processo de recuperação de dados. Após configurá-lo, o AD FS poderá gerar novos tokens de segurança que incluirão o contexto de autorização que o serviço back-end poderá exigir antes de fornecer acesso aos dados protegidos.

O AD FS não restringe quais usuários poderão ser representados. Depois de configurar o AD FS para delegação de identidade, ele faz o seguinte:

  • Determina quais servidores podem ser delegados à autoridade de solicitar tokens para representar um usuário.

  • Estabelece e separa o contexto de identidade da conta do cliente que é representada e o servidor que atua como um representante.

É possível configurar a delegação de identidade adicionando regras de autorização de delegação a um objeto de confiança de terceira parte confiável no snap-in Gerenciamento do AD FS. Para obter mais informações sobre como fazer isso, consulte Checklist: Creating Claim Rules for a Relying Party Trust.

Configurando o aplicativo Web front-end para delegação de identidade

Há várias opções que os desenvolvedores poderão usar para programar adequadamente o aplicativo ou serviço front-end da Web para redirecionar as solicitações de delegação para um computador do AD FS. Para obter mais informações sobre como personalizar um aplicativo Web para trabalhar com a delegação de identidade, consulte o SDK Windows Identity Foundation.

Consulte Também

Guia de design do AD FS no Windows Server 2012