2010-12-10 54 views
1

Je souhaite que l'authentification soit contrôlée par Tomcat. Pour le tester, j'ai créé des pages simples, une page de connexion et une page loginError.
L'authentification semblait fonctionner. Lorsque j'entre un mauvais login ou mot de passe, je vois la page loginError. Mais quand je rentre connexion et mot de passe que je vois:Erreur lors de l'authentification FORM dans Tomcat

type Status report 

message Access to the requested resource has been denied 

description Access to the specified resource (Access to the requested resource has been denied) has been forbidden. 

Voici mon web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <security-constraint> 
     <web-resource-collection> 
      <url-pattern>/protected.jsp</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>*</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <login-config> 
     <auth-method>FORM</auth-method> 
     <form-login-config> 
      <form-login-page>/login.jsp</form-login-page> 
      <form-error-page>/loginError.jsp</form-error-page> 
     </form-login-config> 
    </login-config> 

    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Voici mon tomcat-users.xml

<tomcat-users> 

    <role rolename="tomcat"/> 
    <role rolename="admin"/> 
    <role rolename="manager"/> 
    <user password="tomcat" roles="tomcat,manager,admin" username="tomcat"/> 
    <user password="proger" roles="tomcat" username="proger"/> 
</tomcat-users> 

Mon login. jsp ressemble à:

<html> 
    <body> 
     <form id="loginForm" method="post" action="j_security_check"> 
      <p> 
       Username: <input type="text" name="j_username" id="j_username" /> 
       <br/> 
       Password: <input type="password" name="j_password" id="j_password" /> 
       <br/> 
       <button type="submit">login</button> 
      </p> 
     </form> 
    </body> 
</html> 

Je le déploie J'utilise NetB eans 6.9.1. J'utilise Tomcat 6.0.29. Qu'est-ce qui ne va pas? Merci d'avance.

+0

Essayez avec un nom de rôle explicite comme 'tomcat' au lieu de caractère générique' * '. Je me souviens de quelques problèmes à ce sujet, mais je serais surpris si cela n'est pas corrigé dans le dernier Tomcat 6 que vous avez là. – BalusC

+0

Ce n'est pas corrigé. Merci pour votre conseil. Ça m'a aidé. –

Répondre

1

En utilisant

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

exige que vous définissez également des rôles « valides »

<security-role> 
     <role-name>admin</role-name> 
</security-role> 
<security-role> 
    <role-name>user</role-name> 
</security-role> 

Si l'utilisateur entre un nom valide/pass, mais seulement dans le rôle « crétin », ils get access denied