Partilhar via


Como: Implementar Controlo de Acesso baseado em funções (RBAC) numa aplicação de ASP.NET consciente de reclamações utilizando WIF e ACS

Atualizado: 19 de junho de 2015

Aplica-se a: Azure

Aplica-se A

  • Microsoft Azure Ative Directory Controlo de Acesso (também conhecido como serviço de Controlo de Acesso ou ACS)

  • ® Fundação Windows identidade (WIF)

  • ASP.NET

Resumo

Este tópico explica como implementar a autorização de Controlo de Acesso (RBAC) baseada em créditos conscientes ASP.NET aplicações web utilizando WIF e ACS.

Conteúdos

  • Objetivos

  • Descrição Geral

  • Resumo dos Passos

  • Passo 1 – Criar uma aplicação web de ASP.NET simples

  • Passo 2 - Configurar as reivindicações de funções na ACS

  • Passo 3 – Implementar verificações de funções numa aplicação web ASP.NET

  • Passo 4 – Implementar uma transformação de reclamações utilizando um gerente de crédito personalizado

  • Passo 5 – Teste o seu trabalho

  • Itens Relacionados

Objetivos

  • Configure as alegações de função utilizando o ACS.

  • Transforme as reivindicações de funções usando o ClaimsAuthenticationManager.

  • Implementar controlos de controlo de acesso baseados em funções utilizando o método IsInRole e os atributos PrinciaplPermission.

Descrição Geral

O RBAC é uma abordagem amplamente adotada para restringir o acesso em aplicações. Em ASP.NET aplicações web, esta abordagem é implementada utilizando o método IsInRole, o atributo PrincipalPermission, ou exigências, que estão disponíveis desde ASP.NET 1.0. Pode utilizar pedidos de autorização, preservando assim práticas bem estabelecidas, utilizando novas tecnologias, como WIF e ACS. Você pode baixar o tempo de execução WIF e SDK aqui:

Resumo dos Passos

  • Passo 1 – Criar uma aplicação web ASP.NET simples consciente de reclamações

  • Passo 2 - Configurar as reivindicações de funções na ACS

  • Passo 3 – Implementar verificações de funções numa aplicação web ASP.NET

  • Passo 4 – Implementar uma transformação de reclamações utilizando um gerente de crédito personalizado

  • Passo 5 – Teste o seu trabalho

Passo 1 – Criar uma aplicação web ASP.NET simples consciente de reclamações

Este passo mostra-lhe como criar uma aplicação web ASP.NET básica que será usada como base para a implementação do RBAC.

Para criar uma aplicação web de ASP.NET simples

  1. Comece Visual Studio com a opção "Executar como administrador". Isto é necessário para a WIF.

  2. Crie uma nova aplicação web ASP.NET vazia.

  3. Adicione o formulário web aspx e, em seguida, dê-lhe um nome, por exemplo, padrão.aspx.

Passo 2 - Configurar as reivindicações de funções no ACS

Este passo mostra-lhe como configurar as reivindicações de funções no Portal de Gestão acs utilizando grupos de regras. Consulte como: Implementar a Lógica de Transformação token usando regras para uma passagem completa passo a passo.

Para configurar as reivindicações de funções no Portal de Gestão da ACS

  1. Na página 'Aplicação do Partido de Edição' de Editar , desloque-se até à secção Grupos de Regras e, em seguida, clique no link do grupo pretendido. Certifique-se de que está selecionado.

  2. Na página 'Grupo regra de edição ', desloque-se até à secção Regra e, em seguida, clique no link 'Adicionar Regra '.

  3. Na página 'Adicionar Regra reclamação ', desloque-se para a secção de tipo de reclamação de saída , clique no botão de rádio tipo Select e, em seguida, escolha o seguinte tipo de reclamação.

    https://schemas.microsoft.com/ws/2008/06/identity/claims/role
    
  4. Na secção de valor de reclamação de saída , clique em Introduzir o valor e, em seguida, introduza o seguinte texto como um valor na caixa de texto:
    Utilizador

  5. Opcionalmente, (recomendado) adicione uma descrição e, em seguida, clique em Guardar.

Acaba de configurar a alegação da função do Utilizador que pode ser adicionada a qualquer token. O cenário pode ser diferente dependendo dos seus requisitos. Para obter mais informações sobre a configuração de regras mais complexas, consulte Como: Implementar a Lógica de Transformação token usando regras.

Passo 3 – Implementar verificações de funções numa aplicação web ASP.NET

Este passo mostra como implementar o RBAC.

Para implementar o RBAC numa página web ASP.NET

  1. Adicione uma referência à montagem Microsoft.IdentityModel.

  2. Abra o código por trás do predefinido.aspx.cs.

  3. Adicione o seguinte, usando declarações.

    using System.Security.Permissions;
    using System.Threading;
    using Microsoft.IdentityModel.Claims;
    using System.Security;
    
  4. Decore o Page_Load manipulador de eventos com a seguinte exigência de segurança. Este atributo verificará se o utilizador atual está na função de Utilizador. Se não, uma exceção será lançada.

    [PrincipalPermission(SecurityAction.Demand, Role = "User")]
    
  5. Adicione o seguinte código ao corpo de Page_Load manipulador de eventos. Isto é exatamente o mesmo que a exigência expressa no código.

    PrincipalPermission p = new PrincipalPermission(null, "User");
       p.Demand();
    
  6. Adicione o seguinte código ao corpo de Page_Load evento. Ao contrário do código anterior, este código não lança uma exceção. Em vez disso, a IsInRole devolve Boolean indicando se o utilizador atual tem a função especificada.

    if (!User.IsInRole("User"))
                    throw new SecurityException("Access is denied.");
    
  7. O código preenchido deve ser semelhante ao seguinte.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using System.Security.Permissions;
    using System.Threading;
    using Microsoft.IdentityModel.Claims;
    using System.Security;
    
    namespace WebIsInRoleACS
    {
        public partial class _default : System.Web.UI.Page
        {
            //THIS SHOULD THROW AN EXCEPTION
            [PrincipalPermission(SecurityAction.Demand, Role = "User")]
            protected void Page_Load(object sender, EventArgs e)
            {
    
                //THIS SHOULD THROW AN EXCEPTION
                PrincipalPermission p = new PrincipalPermission(null, "User");
                p.Demand();
    
                //THIS RETURNS BOOL
                if (!User.IsInRole("User"))
                    throw new SecurityException("Access is denied.");
            }
        }
    }
    

Passo 4 – Implementar uma transformação de reclamações utilizando um gerente de crédito personalizado

Este passo é opcional. Este passo mostra como transformar as reclamações utilizando o ClaimsAuthenticationManager, que faz parte do oleoduto WIF que funciona no contexto da aplicação ASP.NET, ao contrário das regras de transformação de sinistros que funcionam em ACS, conforme descrito no Passo 2 – Configure Role Claims no ACS.

Implementar a transformação de sinistros usando um gerente personalizado da ClaimsAuthentication

  1. Adicione o projeto class Library à Solução Visual Studio e, em seguida, dê-lhe um nome, por exemplo, MyClaimsTransformationModule.

  2. Adicione uma referência à montagem Microsoft.IdentityModel .

  3. Adicione uma referência à montagem System.IdentityModel .

  4. Crie uma nova classe e, em seguida, dê-lhe um nome, por exemplo, ClaimsTransformationModule.

  5. Adicione as seguintes declarações à classe.

    using Microsoft.IdentityModel.Claims;
    using System.Security.Principal;
    
  6. Derivar a classe do tipo ClaimsAuthenticationManager .

  7. Anular o seu método Authenticate (é aqui que a transformação de sinistros ocorrerá). O seu código para o método Authenticate pode basear-se no seguinte.

    if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true)
    {
        //DECIDE ON SOME CRITERIA IF CURRENT USER DESERVES THE ROLE
        //IClaimsIdentity identity = (IClaimsIdentity)incomingPrincipal.Identity;
        ((IClaimsIdentity)incomingPrincipal.Identity).Claims.Add(
            new Claim(ClaimTypes.Role, "Admin"));
    }
    return incomingPrincipal;
    
  8. Mude para a aplicação ASP.NET e configuure o seu gerente de reclamações personalizados na sua web.config.

      <microsoft.identityModel>
        <service>
          <claimsAuthenticationManager type="MyClaimsTransformationModule.ClaimsTransformationModule, MyClaimsTransformationModule" />
    
  9. Certifique-se de que o novo conjunto que criou pode ser encontrado pela aplicação; a forma mais simples é colocá-la na pasta do caixote do lixo da aplicação.

Passo 5 – Teste o seu trabalho

Este passo mostra como validar que a solução funciona. Para testar a sua solução, prima o botão F5. A sua aplicação web ASP.NET deve ser executada no modo de depuração (pode adicionar pontos de rutura para verificar a execução do código dentro de Visual Studio). Em primeiro lugar, deve ser levado para a página de autenticação do fornecedor de identidade que foi configurado para a federação. Após a conclusão da autenticação, deverá ser redirecionado de volta para a página Predefinida.aspx sem que seja lançada uma exceção, o que significa que todas as exigências de segurança para a função de Utilizador foram satisfeitas.