如何使用自定义JAAS堆栈配置spring security?

时间:2012-03-14 13:53:21

标签: spring-security jaas

我已关注this tutorial以便为我的spring mvcbasedweb应用添加基本的弹簧安全性。

在添加spring安全层之前,我的app使用在我的web.xml中配置的acustom SSO登录模块进行保护:

 <login-config>
        <auth-method>MyLoginModule</auth-method>
    </login-config>

此登录模块负责重定向到登录表单,执行登录等工作并正在进行预期工作。 添加基本​​弹簧安全层后,应用程序将重定向到我的自定义登录页面,当我进行身份验证时,使用spring的标准“使用用户名和密码登录”表单通过另一个身份验证传递给我。

我的问题是如何配置spring只使用我上面的login-config来执行身份验证并删除它冗余的“内置”表单?

2 个答案:

答案 0 :(得分:0)

抱歉,之前我还没有理解你的情景。检查this以执行身份验证。您应该将用户注册到SecurityContextHolder。

另请访问oficial spring 3.1 security reference

以下示例适用于典型的表单Web身份验证(请务必使用spring j_username / password标识它):

<form id="loginForm" name="loginForm"
action="<c:url value='my_security_check'/>" method="POST">
    ... 
<label for="user">The username</label><input type="text" name="j_username"/>
<label for="password">The password</label><input type='password'
      name='j_password'/>
    ...
<input name="submitButton" type="submit" value="submit"/>
    ...

您必须在Spring安全文件中定义此安全检查:

    <security:form-login login-page="/login"
        default-target-url="/welcome" 
        login-processing-url="/my_security_check" />
    <security:logout logout-url="/my_security_logout"
        logout-success-url="/login" />
 </security:http>

在我的情况下,我正在使用Tiles,我还必须将其添加到我的mvc配置文件中:

<mvc:view-controller path="/login" view-name="login" />

示例和源代码:mkyong.com/spring-security/spring-security-form-login-example /

答案 1 :(得分:-2)

我在Spring Security参考中找到了我想要的东西。具体来说,是关于Java Authentication and Authorization Service (JAAS) Provider的一章。