调用j_security_check时WebSphere调用哪个登录模块?

时间:2015-10-05 06:17:20

标签: java-ee websphere jaas

我编写了一个自定义登录模块并在导航器中调用它(内容导航器的应用程序登录模块),它运行得很好,但是当我们调用j_security_check url时,它在登录页面上不起作用。 / p>

有没有办法,我可以在那里配置它?由于它是一个jsp页面,我将会有更多的事情要做。

2 个答案:

答案 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">&nbsp;
                <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;,如本案例所述。

此机制可用于执行细粒度映射,您可以为组定义单独的角色并将其映射到用户存储库组等。