Spring Security HTTP基本身份验证

时间:2010-04-22 13:25:27

标签: java spring-security http-basic-authentication

我正在尝试使用Spring Security进行非常简单的基本身份验证。我已正确配置命名空间,服务器中没有例外。在我的“servlet.xml”中,我获得了Spring Security的下一个:

<security:http>
    <security:http-basic></security:http-basic>
    <security:intercept-url method="POST" pattern="/**" access="ROLE_USER" />
</security:http>


<security:authentication-manager alias="authenticationManager">
    <security:authentication-provider>
        <security:user-service>
            <security:user name="cucu" password="tas" authorities="ROLE_USER" />
            <security:user name="bob" password="bobspassword" authorities="ROLE_USER" />
        </security:user-service>
    </security:authentication-provider>
</security:authentication-manager>

几乎一切都很完美:非POST的方法不会提示任何登录表单,POST方法会提示它。问题是,cucu也是bob,{{1}}都无法登录。谁能看到我做错了什么?

提前致谢! ; - )

2 个答案:

答案 0 :(得分:24)

自动应答

T_T两天的时间撞到我的代码......

看起来这不是代码问题。我正在使用Weblogic,而Weblogic使用“授权”标头捕获请求,因此它无法访问我的身份验证管理器。我尝试用glassfish,它完美无缺。

在搜索一些信息时,我在下一篇博客中找到了一个有用的条目: http://yplakosh.blogspot.com/2009/05/how-to-fix-basic-authentication-issue.html

从我的Weblogic服务器(<security-configuration>部分)添加config.xml中的下一行:

<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>

Weblogic不会再次捕获基本身份验证凭据,因此将由您的身份验证管理员来处理它。

我希望它可以节省一些时间给任何人: - )

答案 1 :(得分:1)

尝试:

<http auto-config="true>
   <security:intercept-url method="POST" pattern="/**" access="ROLE_USER" />
   <http-basic />
</http>