首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用j_security_check时,WebSphere会调用哪个登录模块?

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

Stack Overflow用户
提问于 2015-10-05 14:17:20
回答 2查看 1.7K关注 0票数 0

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

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

EN

回答 2

Stack Overflow用户

发布于 2015-10-05 17:06:14

如果您使用j_security_check,那么它将转到WEB_INBOUND登录模块。请查看此页面Developing custom login modules for a system login configuration for JAAS以了解更多详细信息。但是,有时最好提供您自己的登录方法,制作一份WEB_INBOUND的副本,并通过插入您自己的登录模块来自定义该副本。取决于您的要求和服务器上安装的其他应用程序。

票数 1
EN

Stack Overflow用户

发布于 2015-10-05 16:12:27

您的login JSP应该指向j_security_check。用户名和密码应分别命名为j_username和j_password。如果您的自定义登录模块在WAS中配置正确,则它应该从此登录页面获得用户名和密码。

下面是一个登录JSP的示例:

代码语言:javascript
运行
复制
<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方法、login和loginerror JSP,以及安全角色。这是在web应用程序的web.xml中定义的。

这是一个简单的登录配置示例,其中允许所有经过身份验证的用户访问受保护的资源(您必须根据您的设置更改servlet名称):

代码语言:javascript
运行
复制
<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目录中):

代码语言:javascript
运行
复制
<?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",如本例所示。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32942325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档