tomcat 7 Formulaire d'authentification

donné une Servlet HelloServlet:

@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * Default constructor.
     */
    public HelloServlet() {
    //TODO Auto-generated constructor stub
    }


   @Override
    protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    //TODO Auto-generated method stub
    System.out.print("hello my Friend: " + request.getRemoteUser());
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("This is the Test Servlet");

    Enumeration headerNames = request.getHeaderNames();
    while (headerNames.hasMoreElements()) {
        String headerName = (String) headerNames.nextElement();
        out.print("<br/>Header Name: <em>" + headerName);
        String headerValue = request.getHeader(headerName);
        out.print("</em>, Header Value: <em>" + headerValue);
        out.println("</em>");
    }
    }
....
}

avec une déclaration de tomcat politique de sécurité dans web.xml:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>my application</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>

    <auth-constraint>
        <role-name>tomcat</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>/login-failed.jsp</form-error-page>
    </form-login-config>
</login-config>

et tomcat-rôles de définitions conf/tomcat-users.xml

  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>

le monde "server.xml" est:

  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <!-- This Realm uses the UserDatabase configured in the global JNDI
         resources under the key "UserDatabase".  Any edits
         that are performed against this UserDatabase are immediately
         available for use by the Realm.  -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

,J'ai essayé d'accéder à la Servlet "HelloServlet" avec l'url localhost/jsfWorkgroup/HelloServlet.

comme prévu, je suis (re)dirigé vers la page d'identification:

<form method="POST" action="j_security_check">
<table>
  <tr>
    <td colspan="2">Login to the Tomcat-Demo application:</td>
  </tr>
  <tr>
    <td>Name:</td>
    <td><input type="text" name="j_username" /></td>
  </tr>
  <tr>
    <td>Password:</td>
    <td><input type="password" name="j_password"/ ></td>
  </tr>
  <tr>
    <td colspan="2"><input type="submit" value="Go" /></td>
  </tr>
</table>
</form>

N'importe qui à l'id de Jeton que j'ai utilisé:

  1. nom d'utilisateur:tomcat mot de passe:tomcat
  2. nom d'utilisateur:mot de passe à la fois:tomcat

J'ai encore venir à l'échec /de connexion a échoué.jsp.

ici est mon point de vue sur ce: tomcat agit sur me diriger vers la page de connexion, mais ne les lisent pas conf/tomcat-users.xml pour valide mon login(même après plusieurs redémarrages).

qu'en pensez-vous ?

configuration: Tomcat 7.0.23, Eclipse Indigo

Vous pouvez poster votre <Royaume> config à partir de server.xml?
J'ai mis à jour ma réponse en conséquence
Double-vérifier les commentaires dans conf/tomcat-users.xml: tout est commenté pour empêcher tout accès, dans une configuration par défaut.

OriginalL'auteur arthur | 2012-07-08