我编写了一个自定义登录模块并在导航器中调用它(内容导航器的应用程序登录模块),它运行得很好,但是当我们调用j_security_check url时,它在登录页面上不起作用。 / p>
有没有办法,我可以在那里配置它?由于它是一个jsp页面,我将会有更多的事情要做。
答案 0 :(得分:1)
如果您使用j_security_check,那么它将转到WEB_INBOUND
登录模块。有关详细信息,请查看此页面Developing custom login modules for a system login configuration for JAAS。但有时最好提供自己的登录方法,复制WEB_INBOUND
并自定义该副本并插入自己的登录模块。取决于您的要求和服务器上安装的其他应用程序。
答案 1 :(得分:0)
您的登录JSP应指向j_security_check。用户名和密码应分别命名为j_username和j_password。 如果在WAS中正确配置了自定义登录模块,则应从此登录页面获取用户名和密码。
以下是登录JSP的示例:
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="post" action="<%=request.getContextPath()%>/j_security_check">
<table width="80%">
<tr>
<td width="20%" align="right">Username:</td>
<td><input size="20" type="text" name="j_username" maxlength="25"></td>
</tr>
<tr>
<td align="right">Password:</td>
<td><input size="20" type="password" name="j_password" maxlength="25"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="action" value="Login">
<input type="reset" name="reset" value="Clear"></td>
</tr>
</table>
</form>
</body>
</html>
接下来,您必须定义auth方法,登录和loginerror JSP以及安全角色。这是在Web应用程序的web.xml中定义的。
这是一个简单登录配置的示例,其中允许所有经过身份验证的用户访问受保护资源(您必须根据您的设置更改servlet名称):
<login-config>
<auth-method>FORM</auth-method>
<realm-name>My Realm</realm-name>
<form-login-config>
<form-login-page>login.jsp</form-login-page>
<form-error-page>loginerror.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>users</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>appServlet</web-resource-name>
<url-pattern>/app/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>users</role-name>
</auth-constraint>
</security-constraint>
注意:如果您的JSP驻留在WEB-INF中,则无法直接访问它,在该cas中您应该有一个服务器端控制器将其重定向到这些JSP。
最后,您必须定义映射的安全角色映射用户,例如对所有经过身份验证的用户。
这是在EAR绑定文件ibm-application-bnd.xml中定义的(将它放到application.xml旁边的EAR&#39的META-INF目录中):
<?xml version="1.0" encoding="UTF-8"?>
<application-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-application-bnd_1_0.xsd"
version="1.0">
<security-role name="users">
<special-subject type="ALL_AUTHENTICATED_USERS" />
</security-role>
</application-bnd>
(这是WAS 8.0的设置,如果你有一个较旧的EAR版本,这个文件名为ibm-application.xmi,并且语法不同。)
如果您没有EAR,那么无关紧要,因为WAS会要求您映射安全角色&#34;用户&#34;适当的用户/群组或特殊主题&#34;所有经过身份验证的用户&#34;,如本案例所述。
此机制可用于执行细粒度映射,您可以为组定义单独的角色并将其映射到用户存储库组等。