Posso declarar vários <security-constraint>?

3 respostas
K

Olá pessoal,
estou estudando Autenticação/Autorização JEE e surgiu uma dúvida:

  • O Elemento <security-constraint> é utilizado para declarar restrições acesso aos recurso de uma aplicação web.
  • O elemento <url-pattern> sinaliza os recursos que podem ser acessados para essa <security-constraint>.
  • E o elemento <auth-constraint> declara os usuários que podem ter acesso a esses recursos indicados em <url-pattern>.

Então a minha dúvida é a seguinte: Acredito que podemos declarar várias tags <security-constraint> em uma mesma aplicação web (no mesmo web.xml) combinando vários recursos e usuários que podem acessá-los. Ou seja, posso ter duas <security-constraint>, uma declarando recursos que só podem ser acessados por usuários “admin” e outra <security-constraint> indicando outros recursos que podem ser acessados por usuários comuns?

Por favor, confirmem se meu raciocínio está correto ou se me confundi em algum ponto.
Obrigado pela atenção!

Kallás.

3 Respostas

K

Olá moçada,
postei a dúvida e descobri a solução depois… então, vou postar aki pra esclarecer essa (rsrs).
Estudando um pouco mais, acabei fazendo uns testes e cheguei à conclusão de que a resposta é: sim! Nós podemos declarar vários <security-constraint>, no mesmo web.xml, para definir várias regras de acesso aos recursos da app web.

Exemplo:

&lt;security-constraint&gt;
        &lt;web-resource-collection&gt;
            &lt;web-resource-name&gt;Paginas de usuario comum&lt;/web-resource-name&gt;
            &lt;url-pattern&gt;/users/*&lt;/url-pattern&gt;
        &lt;/web-resource-collection&gt;
        &lt;auth-constraint&gt;
            &lt;role-name&gt;comum&lt;/role-name&gt;
        &lt;/auth-constraint&gt;
    &lt;/security-constraint&gt;

    &lt;security-constraint&gt;
        &lt;web-resource-collection&gt;
            &lt;web-resource-name&gt;Paginas de administradores&lt;/web-resource-name&gt;
            &lt;url-pattern&gt;/admin/*&lt;/url-pattern&gt;
        &lt;/web-resource-collection&gt;
        &lt;auth-constraint&gt;
            &lt;role-name&gt;admin&lt;/role-name&gt;
        &lt;/auth-constraint&gt;
    &lt;/security-constraint&gt;

    &lt;security-role&gt;
        &lt;role-name&gt;comum&lt;/role-name&gt;
    &lt;/security-role&gt;
    &lt;security-role&gt;
        &lt;role-name&gt;admin&lt;/role-name&gt;
    &lt;/security-role&gt;

OK. Valeu!

V

Como faço para configurar uma página de erro? Em vez de ter a do container, quero uma página personalizada. Como faço isso no web.xml?

E

VVagners,
então mano, depois da tag <security-constraint> - conforme http://java.sun.com/dtd/web-app_2_3.dtd - segue um exemplo de como customizar uma página de erro:

<login-config>
<auth-method>FORM</auth-method>
<realm-name>ldapRealm</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/erro_acesso.jsp</form-error-page>
</form-login-config>
</login-config>

Vlw!

Criado 22 de dezembro de 2006
Ultima resposta 27 de fev. de 2007
Respostas 3
Participantes 3