tomcat 7 Formular-basierter Authentifizierung

gegeben ein 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>");
    }
    }
....
}

mit einem deklarierten tomcat security policy in 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>

- und tomcat-Rollen-Definitionen 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"/>

the realm "server.xml":

  <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>

Habe ich versucht, Zugriff auf den Servlet "HelloServlet" mit der url localhost/jsfWorkgroup/HelloServlet.

sich, wie zu erwarten, bin ich (wieder)direkt auf die einloggen-Seite:

<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>

Egal, welche id-Token verwendet habe ich:

  1. Benutzername:tomcat passwort:tomcat
  2. Benutzername:sowohl passwort:tomcat

Ich immer noch kommen, um die Störung /der login ist fehlgeschlagen.jsp.

hier ist mein nehmen auf dieser: tomcat wirkt auf umleiten mich auf die login-Seite, aber nicht gelesen conf/tomcat-users.xml zur Gültigkeit meiner Anmeldung(auch nach mehreren Neustarts).

was haltet Ihr davon ?

Konfiguration: Tomcat 7.0.23, Eclipse-Indigo

Können Sie Ihre <Reich> config aus server.xml?
Ich aktualisiert meine Antwort dementsprechend
Überprüfen Sie die Kommentare in conf/tomcat-users.xml: alles wird kommentiert-out um zu verhindern, dass jede Art von Zugriff, die in einer Standard-Konfiguration.

InformationsquelleAutor arthur | 2012-07-08

Schreibe einen Kommentar