我正在尝试使用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}}都无法登录。谁能看到我做错了什么?
提前致谢! ; - )
答案 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>