Autenticação pelo Tomcat

3 respostas
R

Estou estudando o livro da Kathy Sierra Head-First Servlets e JSP e há dois dias estou tentando desenvolver um exemplo de autenticação já procurei na internet e tem um exemplo parecido de configuração dos arquivos mas não consigo chamar aquele formulário de autenticação padrão do browser, estou usando modo BASIC no login-config, segue o código para saber se estou fazendo algo errado.

No tomcat-users.xml

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="Guest"/>
  <role rolename="Adm"/>
  <role rolename="Member"/>
  <user username="Annie" password="admin"  roles="Adm,Member,Guest"/>
  <user username="Diane" password="coder" roles="Member,Guest"/>
  <user username="Ted" password="newBie" roles="Guest"/>
</tomcat-users>

No web.xml da minha aplicação chamada “Beer”

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

<servlet>
  <servlet-name>teste</servlet-name>
  <servlet-class>AddRecipe.servletTeste</servlet-class> 
</servlet>
<servlet-mapping>
  <servlet-name>teste</servlet-name>
  <url-pattern>/t.do</url-pattern>
</servlet-mapping>

<security-constraint>
  <web-resource-collection>
    <web-resource-name>UpdateRecipes</web-resource-name>
    <url-pattern>/Beer/*</url-pattern>
    <http-method>GET</http-method> 
  </web-resource-collection>
  <auth-constraint>
    <role-name>Admin</role-name>
  </auth-constraint>
</security-constraint>

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

  <security-role>
    <role-name>Adm</role-name>
  </security-role>

</web-app>

PS: o nome da aplicação é Beer, e a estrutura de pastas é a seguinte

->webapps
    ->Beer (chamaServlet.jsp que dispara o servlet via get) 
          ->WEB-INF (com web.xml)
               ->classes
                      ->AppRecipe (servlet.class)

PS: A única coisa que não consigo fazer é chamar o form de autenticação default do browser.

*Editado - Lembre-se de usar a tag CODE em seus códigos.

3 Respostas

S

Não sei se é exatamente isso, mas:

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

Não existe esse role, “Admin”. Deveria ser “Adm”.

<security-role>
<role-name>Adm</role-name>
</security-role>

Também acho que você deveria declarar os outros roles aí. “Member” e “Guest”.

M

Salve,

cara tente retirar o trecho de código abaixo…

&lt;security-role&gt; &lt;role-name&gt;Adm&lt;/role-name&gt; &lt;/security-role&gt;

Mude de basic para Digest e tire <http-method>GET</http-method> e tente novamente.

:okok:

R

Realmente, eu mexi na configuração do código e o treco começou a funcionar.

Valeu pela ajuda pessoal!!!

Criado 20 de agosto de 2005
Ultima resposta 22 de ago. de 2005
Respostas 3
Participantes 3