Israel Aéce

Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT

My Links

Blog Stats

Archives

Post Categories

Links

Login

Security Trimming - Visualização de Items

A Microsoft implementou na versão 2.0 do ASP.NET uma opção para criar uma forma de navegação dentro de um determinado WebSite. Isso possibilita a definição dos items de menus via arquivo XML (*.sitemap), onde definimos a hierarquia dos items que serão utilizandos e, consequentemente, apresentados pelos mais diversos controles de navegação que o ASP.NET 2.0 prove.

Para aqueles que não sabem, os arquivos *.sitemap permite-nos definir (através de um atributo chamado roles do elemento siteMapNode) os papéis que o usuário deverá pertencer para que sejam possíveis a visualização ou não destes itens nos controles que os carregarem.

Há uma certa confusão quando desejamos trabalhar com "Security Trimming" dentro desta aplicação, pois não basta apenas definirmos o atributo securityTrimmingEnabled do provider para True e as roles que serão permitidas no elemento siteMapNode dentro do arquivo *.sitemap. Além disso, é necessário que, as roles definidas no arquivo *.sitemap, precisam estar em sincronia com os elementos authorization no arquivo Web.Config, pois o ASP.NET analisa as roles do usuário corrente e o elemento authorization no arquivo de configuração antes de exibir ou não o item no controle.

Mas tudo isso AINDA NÃO É SUFICIENTE. A questão é que, por default, o elemento authorization é permitido para todos os usuários (allow users="*"), independentemente das roles, logo, se não se atentar a isso, os items continuam sendo visíveis, porém não acessíveis. Para solucionar isso, voce precisa antes de ir definindo os recursos que cada role terá, negar o acesso a todos os usuários, assim como é mostrado no trecho de código logo abaixo:

<configuration>
  <system.web>
    <authorization>
      <deny users="*" />
    </authorization>
  </system.web>
  <location path="Pagamentos.aspx">
    <system.web>
      <authorization>
        <allow roles="Gerente" />
      </authorization
    </system.web>
  </location>
  <location path="Extrato.aspx" >
    <system.web>
      <authorization>
        <allow roles="Funcionario" />
      </authorization>
    </system.web>
  </location>
<configuration>

posted on Monday, May 29, 2006 4:31 PM

Feedback

# re: Security Trimming - Visualização de Items 3/28/2007 4:51 AM Lori Batera

Obrigado, esse post resolveu o problema que eu estava tendo ao configurar meu menu baseado em SiteMap. Acho a plataforma .NET fantástica, mas excessivamente baseada em configurações.

Sincronizar sitemap, webconfig, base de dados e alguns itens não tão claros como esse me parece muito trabalho numa tecnologia que visa simplifificar as coisas, especialmente para uma tarefa relativamente simples como mostrar itens de menu para usuários autenticados.

# re: Security Trimming - Visualização de Items 3/29/2007 5:28 AM Israel Aece

Ola Lori,

Bem, para todas as configurações em arquivos config temos classes correspondentes no framework.

A questão é que configurações te dão sempre uma maior flexibilidade.

Title  
Name  
Url
Box Code
Protected by FormShield
Comments