13 Feb

Howto: Criando uma área de segurança para proteger aplicações no Tomcat

Olá pessoal, hoje uma dica bem simples.

Você já deve conhecer o esquema de proteção de diretórios que é utilizado no apache, onde é possível configurar uma lista de usuários que podem ter acesso a terminando conteúdo de um servidor web. Normalmente é solicitado um usuário e senha através de uma janela semelhante a esta:

Com Apache é muito fácil, tem muitos tutoriais por ai, iremos ver como podemos fazer o mesmo com uma aplicação rodando no Tomcat.

Howto:  Como proteger suas aplicações Java utilizando Realm
==================================================

Primeiramente convido você a conhecer o que é Realm do Tomcat.

1. Edite o arquivo: <tomcat_home>/conf/server.xml, e descomente a seguinte linha:

<Realm className=”org.apache.catalina.realm.MemoryRealm” />

Se você não encontrar esta linha, acrescente-a.

OBS:
“Tentei prosseguir sem fazer este passo, e funcionou também, apesar de ser recomendação  oficial”.

2. Vá ate o diretório de sua aplicação, e abra o arquivo web.xml, normalmente localizado em:

<tomcat_home>/webapps/suaAplicacao/WEB-INF/web.xml

Adicione as seguintes linhas entre as tags <web-app>…</web-app>:

<security-constraint>

<web-resource-collection>
<web-resource-name>OnJava Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>

<auth-constraint>
<role-name>onjavauser</role-name>
</auth-constraint>

</security-constraint>

Existem apenas dois sub-elementos que você precisa concentrar-se.

O primeiro é o <url-pattern>. Este sub-elemento define a URL da aplicação que será protegida. No exemplo acima protege a raíz da aplicação (/*), se fosse uma determinada pasta, é so definir ai, (/pasta)

O segundo sub-elemento, <role-name>, define o papel que o usuário pode acessar no diretório previamente definido em <url-pattern>.

Ou seja, significa que o acesso a raíz (/*) da aplicação (onjava) so poderá ser acessado pelos usuários do perfil definido em onjavauser.

3. Adicione no mesmo arquivo (web.xml) logo na seqüência após </security-constraint>, as seguintes linhas:

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>OnJava Application</realm-name>
</login-config>

4. Edite o arquivo <tomcat_root>/conf/tomcat-users.xml e adicione o seguinte sub-elemento:

<user name=”bob” password=”password” roles=”onjavauser” />

O sub-elemento <user> irá criar um novo usuário na base de dados do MemoryRealm do Tomcat,  que no exemplo dado com  com um nome de bob uma senha de password e um papel de onjavauser.

Você deve ter percebido que o valor do atributo roles  corresponde ao valor do sub-elemento <role-name> previamente definidos no web.xml em <security-contstraint>.

5.  Para concluir esta configuração, reinicie  o Tomcat.

Somente…

Fonte:

http://www.onjava.com/pub/a/onjava/2001/07/24/tomcat.html

2 thoughts on “Howto: Criando uma área de segurança para proteger aplicações no Tomcat

  1. Muito boa dica!!
    Você sabe como eu faria para implementar esse pedido de usuário e senha somente de requisições vindas de um determinado IP??

    Ex.: Pedir usuario e senha somente quando o cliente tiver o IP 192.168.2.2.

    Muito obrigado pela dica!!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>