Exportar (0) Imprimir
Expandir Tudo

Autorização em aplicativos e serviços web com reconhecimento de declaração

Publicado: abril de 2011

Atualizado: março de 2015

Aplica-se a: Azure

  • Acess Control do Active Directory do Microsoft Azure (também conhecido como Access Control Service ou ACS)

  • Windows® Identity Foundation (WIF)

  • ASP.NET

  • Windows Communication Foundation (WCF)

Em um aplicativo de terceira parte confiável, a autorização determina que recursos uma identidade autenticada pode acessar e que operações pode realizar naqueles recursos. Uma autorização inadequada ou fraca provoca divulgação de informação e violação de dados. Este tópico descreve as abordagens disponíveis para implementar a autorização para aplicativos web ASP.NET com reconhecimento de declaração e serviços usando o ACS e o WIF.

  • Lista as abordagens de autorização que usam declarações.

  • Descreve o design de alto nível para cada abordagem.

  • Indica as vantagens e desvantagens de cada abordagem.

Desde sua primeira versão, o .NET Framework ofereceu mecanismo flexível para implementar a autorização. Este mecanismo está baseado em duas interfaces simples—IPrincipal e IIentity. Implementações concretas de IIentity representam um usuário autenticado. Por exemplo, a implementação WindowsIdentity representa um usuário que está autenticado pelo Active Directory e o GenericIdentity representa a um usuário que está autenticado pela autenticação personalizada. As implementações concretas do IPrincipal ajudam a verificar permissões usando funções dependendo no armazenamento da função. Por exemplo, o WindowsPrincipal verifica no WindowsIdentity se há uma associação nos grupos de Active Directory. Esta verificação é realizada chamando o método IsInRole na interface IPrincipal. Revisar o acesso baseado em funções é chamado de Controle de acesso baseado em função (RBAC). O RBAC é explicado na seção "Controle de acesso baseado em função" deste tópico. As declarações podem ser usadas para levar informação sobre funções para oferecer suporte a mecanismos familiares, de autorização baseada em função.

As declarações também podem ser usadas para ativar decisões de autorização mais completas além de funções. As declarações podem estar baseadas virtualmente em qualquer coisa—, idade, CEP, tamanho de sapato e assim sucessivamente. Verificar o acesso baseado em declarações arbitrárias é chamado de Controle de acesso baseado em declarações ou autorização baseada em declarações. A autorização baseada em declarações está explicada na seção "Controle de acesso baseado em declarações" deste tópico.

As verificações de autorização são realizadas no lado do aplicativo, não no lado do ACS, o ACS serve como um serviço de token de segurança (STS) que emite tokens que levam as declarações ao aplicativo. Os tokens são enriquecidos com declarações por provedores de identidade e opcionalmente pelo mesmo ACS, usando seu mecanismo de regras. Quando o aplicativo recebe o token com declarações, ele pode analisar o token, extrair as declarações relevantes, e fazer as decisões de autorização usando o RBAC ou uma abordagem baseada em declarações. O WIF é usado para analisar o token e fazê-lo usável para decisões de autorização através de uma interface de programação do aplicativos(API) fácil de usar. Para obter mais informações sobre o WIF, consulte o WIF SDK (http://go.microsoft.com/fwlink/?LinkID=187481). Considere o seguinte diagrama ao pensar sobre autorização em aplicativos e serviços com reconhecimento de declaração. Note que durante a autenticação bem sucedida, o provedor de identidade gera um token (o token IdP no diagrama). O token IdP pode ser transformado pelo mecanismo de regras do ACS. o ACS pode adicionar, remover, ou alterar as declarações que vêm no token que o provedor de identidade emite. Finalmente, o token emitido pelo ACS é enviado ao aplicativo e processado pelo WIF. A verificação do acesso é realizada no WIF, usando a abordagem de RBAC ou CBAC.

Autorização do WIF com o ACS v2

O RBAC é uma abordagem de autorização na qual as permissões do usuário são gerenciadas e impostas por um aplicativo baseado nas funções do usuário. Se um usuário tiver uma função que é requerida para realizar uma ação, o acesso é concedido; de outra forma, o acesso é negado.

Para implementar a abordagem RBAC em aplicativos com reconhecimento de declaração, usar o método IsInRole() da interface IPrincipal, exatamente como você faria em aplicativos sem reconhecimento de declaração. Há vários modos de usar o método IsInRole():

  • Explicitamente chamando ao IPrincipal.IsInRole(“Administrator”). Nesta abordagem, o resultado é um Booliano. Use-o em suas instruções condicionais. Pode ser usado arbitrariamente em qualquer lugar no seu código.

  • Usando a demanda de segurança PrincipalPermission.Demand(). Nesta abordagem, o resultado é uma exceção em caso que a demanda não seja atendida. Isto deve ajustar sua estratégia de tratamento de exceções. Gerar exceções é muito mais caro desde a perspectiva de desempenho comparado com desativar um Booliano. Isto pode ser usado em qualquer lugar no seu código.

  • Usando atributos declarativos [PrincipalPermission(SecurityAction.Demand, Role = “Administrator”)]. Esta abordagem é chamada declarativa, porque é usada para decorar métodos. Não pode ser usada em blocos de códigos dentro das implementações de métodos. O resultado é uma exceção em caso de a demanda não ser atendida. Você deve certificar-se que a sua estratégia de tratamento de exceções se ajuste.

  • Uso da autorização de URL, usando a seção <autorização> no web.config. Esta abordagem é adequada quando você está gerenciando uma autorização em um nível de URL. Este é o nível mais alto entre aqueles previamente mencionados. A vantagem desta abordagem é que as alterações são feitas no arquivo de configuração, o que significa que o código não deve ser compilado para se aproveitar da alteração.

Quando o método IsInRole() é chamado, há uma verificação feita para ver se o usuário atual tem essa função. Em aplicativos com reconhecimento de declaração, a função é expressada por um tipo de declaração de função que deve estar disponível no token. O tipo de declaração de função é expressado usando a seguinte URI:

http://schemas.microsoft.com/ws/2008/06/identity/claims/role

Há vários modos de enriquecer um token com um tipo de declaração de função:

  • Usando o mecanismo de regras do ACS—Neste caso você cria uma regra usando o Portal de gerenciamento do ACS ou o Serviço de gerenciamento do ACS para criar regras de transformação de declarações que geram declarações de um certo tipo de função. Para obter mais informações sobre regras e transformações de token, consulte Regras e grupos de regras e Como: Implementar a lógica de transformação de token usando regras.

  • Transformando declarações arbitrarias em declarações de tipo de função usando o ClaimsAuthenticationManager—O ClaimsAuthenticationManager é um componente que fornece como parte do WIF. Permite que as solicitações sejam interceptadas quando elas geram um aplicativo, inspecionando tokens e os transformando adicionando, alterando, ou removendo declarações. Para obter mais informações sobre como usar o ClaimsAuthenticationManager, consulte Como: Implementar o controle de acesso baseado na função (RBAC) em um aplicativo ASP.NET com reconhecimento de declaração usando o WIF e o ACS

  • Mapeamento de declarações arbitrarias a um tipo de função usando a seção de configuração samlSecurityTokenRequirement—Uma abordagem declarativa onde a transformação da declaração é feita usando apenas a configuração e a codificação não é requerida.

O CBAC é uma abordagem de autorização onde a decisão de autorização para conceder ou negar o acesso é baseada em lógica arbitraria que usa os dados disponíveis em declarações para tomar a decisão. Lembre-se de que em caso do RBAC, a única declaração usada foi a declaração de tipo de função. Foi usada uma declaração de tipo de função para verificar se o usuário pertence a uma específica função ou não. Para ilustrar o processo de toma de decisões de autorização usando a abordagem de autorização baseada em declarações, considere as seguintes etapas:

  1. O aplicativo recebe uma solicitação.

  2. O aplicativo extrai as declarações de entrada.

  3. O aplicativo passa as declarações para o mecanismo de decisão lógica. Pode ser em código na memória ou uma chamada para um serviço web, uma consulta para um banco de dados, ou pode invocar um mecanismo de regras sofisticado.

  4. O mecanismo de decisão calcula o resultado baseado nas declarações.

  5. O acesso é concedido se o resultado é verdadeiro e é negado se é falso. Por exemplo, a regra pode ser que o usuário tenha 21 anos de idade ou mais, que viva no estado de Washington, e foi autenticado pelo Windows Live ID (conta da Microsoft)..

O ACS serve como um STS que emite tokens que levam as declarações. Você pode controlar quais declarações estão sendo emitidas—ambos os tipos de declarações e os valores—usando o mecanismo de regras do ACS. Para aprender mais sobre o mecanismo de regras do ACS, consulte Regras e grupos de regras e Como: Implementar a lógica de transformação de token usando regras. O ClaimsAuthorizationManager é primordial para implementar o CBAC em aplicativos com reconhecimento de declaração. O ClaimsAuthorizationManager é um componente que fornece como parte do WIF. O ClaimsAuthorizationManager lhe permite interceptar solicitações de entrada e implementar qualquer lógica da sua escolha para tomar as decisões de autorização baseadas em declarações de entrada. Isto também é um ponto de extensibilidade onde as decisões de autorização podem ser externalizadas e desacopladas do código do aplicativo. Isto torna-se importante quando a lógica de autorização precisa ser alterado. Nesse caso, o uso do ClaimsAuthorizationManager não afetará a integridade do aplicativo, portanto, reduzindo a probabilidade de um erro do aplicativo como resultado da alteração. Para aprender mais sobre como usar o ClaimsAuthorizationManager para implementar controle de acesso baseado em declarações, consulte Como: Implementar a autorização de declarações para aplicativos ASP.NET com reconhecimento de declarações usando o WIF e o ACS.

Consulte também

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft