我已经编写了一个自定义登录模块,并在导航器(内容导航器的应用程序登录模块)中调用它,它运行得很好,但当我们调用j_security_check url时,它在登录页面上不起作用。
有没有办法,我可以在那里配置它?因为它是一个jsp页面,所以我会有更多的事情要做。
发布于 2015-10-05 17:06:14
如果您使用j_security_check,那么它将转到WEB_INBOUND登录模块。请查看此页面Developing custom login modules for a system login configuration for JAAS以了解更多详细信息。但是,有时最好提供您自己的登录方法,制作一份WEB_INBOUND的副本,并通过插入您自己的登录模块来自定义该副本。取决于您的要求和服务器上安装的其他应用程序。
发布于 2015-10-05 16:12:27
您的login 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方法、login和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中,则不能直接访问它,因为您应该有一个服务器端控制器将其重定向到这些JSP。
最后,您必须定义安全角色映射用户,例如映射到所有经过身份验证的用户。
这是在EAR绑定文件ibm-application-bnd.xml中定义的(把它放到application.xml旁边的EAR 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>(这是WAS8.0的设置,如果您有较早的EAR版本,则此文件名为ibm-application.xmi,并且具有不同的语法)。
如果您没有EAR,这并不重要,因为WAS会要求您将安全角色"users“映射到适当的用户/组,或者映射到一个特殊的主题"all authenticated users",如本例所示。
此机制可用于执行细粒度映射,您可以为组定义单独的角色,并将其映射到用户存储库组等。
https://stackoverflow.com/questions/32942325
复制相似问题