Newsgroup: it.comp.java
Titolo: Basic Authentication di una JSP sotto Tomcat

Ciao a tutti, ho necessità di proteggere una JSP contenuta in
un'applicazione in modo da limitarne l'accesso solo agli utenti
provvisti di apposita username/password. In sostanza possiedo un file
Browser.jsp che permette di navigare liberamente sull'HD della
macchina su cui gira... già non è il massimo della sicurezza, vorrei
quantomeno predisporre una Basic Authentication.
Ho seguito la procedura indicata su più siti, ma Tomcat si rifiuta di
deployarla, nel senso che segnala perennemente che /MyApp "is not
available"  (ho controllato il file web.xml e non mi pare ci siano
errori).
Ecco i file che ho editato:
Web.xml
-----------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" 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
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
">
	<display-name>
	MyApp
	</display-name>
  <servlet-mapping>
    <servlet-name>MyApp</servlet-name>
    <url-pattern>/MyApp</url-pattern>
  </servlet-mapping>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Area Riservata</web-resource-name>
      <url-pattern>/MyApp/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>salvatore</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Richiesta Autenticazione</realm-name>
  </login-config>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>
tomcat-user.xml
------------------------
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users>
	<role rolename="admin"/>
	<role rolename="tomcat"/>
	<role rolename="role1"/>
	<role rolename="salvatore"/>
	  <user password="password2008" roles="salvatore" username="admin" />
	  <user password="tomcat" roles="tomcat" username="tomcat"/>
	  <user password="tomcat" roles="role1" username="role1"/>
	  <user password="tomcat" roles="tomcat,role1" username="both"/>
</tomcat-users>
----
A me sembra che sia tutto ok (evidente che non lo sia...!!), e proprio
non capisco cosa non va: peraltro ho aggiunto questo tag a server.xml:
  <Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
        description="User database that can be updated and saved"
        factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
visto che il Tomcat che uso per lo sviluppo (il runtim 5.5 sotto
eclipse) non disponeva di quest'ultimo (e mi sembra di capire che
serva per disporre il mapping utenti/password a Tomcat...).
Qualche idea?
Grazie  (è da stamattina che mi sbatto per fare questa "fesseria"...)
:)
sayhem

 errori).
non ho letto tutto, ma i log li hai controllati ?
-- 
Davide Consonni

 Davide Consonni
Grazie della risposta Daniele...
No, nei log non mi pare che segnali alcuna anomalìa, sembra una
normale sessione di Tomcat.

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Area Riservata</web-resource-name>
      <url-pattern>/MyApp/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>salvatore</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Richiesta Autenticazione</realm-name>
  </login-config>
mi pare di ricordare che ho avuto problemi nel definire protected l'intera
webapp (se ho ben capito la tua web app si chiama MyApp) e poi ho rinunciato
prova a creare una subdirectory pippo e definire
<url-pattern>/pippo/*</url-pattern>
ricordo di avere avuto anche un problema nel togliere tutti gli http-method,
ma non ricordo quale.


Ho provato, ma non va nemmeno così (sempre stesso errore)...
ma scusa, quale stringa è corretta delle due?
<url-pattern>/pippo/*</url-pattern>
<url-pattern>/MyApp/pippo/*</url-pattern>

<url-pattern>/pippo/*</url-pattern>
<url-pattern>/MyApp/pippo/*</url-pattern>
il primo va bene.
sinceramente non vedo motivi perchè non debba funzionare
questo web.xml funziona,
<?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>
   <security-constraint>
      <display-name>Example Security Constraint</display-name>
      <web-resource-collection>
         <web-resource-name>Protected Area</web-resource-name>
  <!-- Define the context-relative URL(s) to be protected -->
         <url-pattern>/prot/*</url-pattern>
  <!-- If you list http methods, only those methods are protected -->
  <http-method>DELETE</http-method>
         <http-method>GET</http-method>
         <http-method>POST</http-method>
  <http-method>PUT</http-method>
      </web-resource-collection>
      <auth-constraint>
         <!-- Anyone with one of the listed roles may access this area -->
  <role-name>AreaLavoro</role-name>
      </auth-constraint>
    </security-constraint>
    <!-- Default login configuration uses form-based authentication -->
    <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>Example Form-Based Authentication Area</realm-name>
    </login-config>
    <!-- Security roles referenced by this web application -->
    <security-role>
      <role-name>AreaLavoro</role-name>
    </security-role>
</web-app>
la webapp si chiama AreaLavoro e le sue subdirectory sono prot e web-inf
nel server.xml non ho toccato nulla

 [...]
Adesso sembra funzionare, grazie.
Non sono sicuro visto che ho fatto un po' di tentativi,
ma credo che dipendesse da come si definisce l'url-pattern.
Scrivendo (anche nel "tuo" web.xml) <url-pattern>/*</url-pattern>
sembra andare tutto a meraviglia.
La stranezza è che adesso non riesco a mappare correttamente username/
password
che passo da tomcat-users.xml ... non appena riesco a produrre un
esempio
pienamente funzionante vedo di postarlo qui per intero.