Restringir acesso à métodos da aplicação.

Demandas RBS declarativas instruem o runtime a executar uma checagem RBS antes de rodar um método. É a forma mais segura de usar RBS para restringir acesso a código. Existem duas desvantagens para este modo:

  • Somente pode ser usado para restringir acesso a métodos inteiros.
  • Podem resultar em uma exceção em runtime. Se o método foi chamado por um evento do windows, a exceção é lançada e sua aplicação pode parar.

Para usar demanda RBS declarativa, seu código precisa ter 3 elementos:

  • O método System.AppDomain.CurrentDomain.SetPrincipalPolicy para especificar a política de segurança.
  • Um bloco Try/Catch para tratar tentativas de acesso sem sucesso e para reportar erros.
  • Um atributo PrincipalPermission para declarar requisitos de acesso ao método.

Para aplicar o atributo, você precisa definir duas coisas antes:

  • A ação que PrincipalPermission terá, que é conseguida através da enumeração SecurityAction. Geralmente usamos SecurityAction.Demand para RBS.
  • Uma ou mais propriedades da classe PrincipalPermission. Use Authenticated para restringir acesso a usuários autenticados, Role para grupos e User para usuários.

Neste código que segue, eu quero lançar uma exceção caso o usuário que esteja tentando executar o método FazerPagamento() não pertença ao grupo de administradores:
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administradores")]
static void FazerPagamento()
{
//Qualquer código aqui.
}


About this entry