gpt4 book ai didi

security - tomcat 7 基于表单的身份验证

转载 作者:行者123 更新时间:2023-11-28 21:49:17 27 4
gpt4 key购买 nike

给定一个 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>");
}
}
....
}

在 web.xml 中声明了 tomcat 安全策略:

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

和 conf/tomcat-users.xml 中的 tomcat-roles 定义

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

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

,我尝试使用 url localhost/jsfWorkgroup/HelloServlet 访问 Servlet“HelloServlet”。

如预期的那样,我被(重新)定向到登录页面:

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

无论我使用哪个 id-Token:

  1. 用户名:tomcat 密码:tomcat
  2. 用户名:双密码:tomcat

我还是来失败/login-failed.jsp。

这是我对此的看法:tomcat 将我重定向到登录页面,但不会读取 conf/tomcat-users.xml 来验证我的登录(即使在几次重新启动后)。

你怎么看?

配置:Tomcat 7.0.23,Eclipse-Indigo

最佳答案

根据@pd40 的建议,我尝试了 examples/jsp/security/protected/示例,但没有在 Eclipse IDE 中尝试,Tomcat 通常与其他服务器(Glassfish、JBoss 等)一起嵌入,而是我开始独立的 tomcat 服务器(在其/bin 目录中).. 并且可以正常工作。

但是当它试图在 Eclipse 中的 Tomcat 中运行基于安全的 Web 应用程序时,它再次失败,即使使用上述配置也是如此。

我不知道我是否正确,但只有当 tomcat 在 eclipse 之外运行时才支持 Web 应用程序安全性。

关于security - tomcat 7 基于表单的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11382159/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com