【发布时间】:2011-08-02 07:31:25
【问题描述】:
我需要使用 Spring security 3.0.5 实现自定义安全方案。
用户必须通过请求中的REMOTE_USER 字段自动进行身份验证(无需任何登录表单)。看来我必须实现自定义AbstractAuthenticationProcessingFilter和AuthenticationManager。
我的方向正确吗? XML 配置可能是什么?
【问题讨论】:
标签: spring-security
我需要使用 Spring security 3.0.5 实现自定义安全方案。
用户必须通过请求中的REMOTE_USER 字段自动进行身份验证(无需任何登录表单)。看来我必须实现自定义AbstractAuthenticationProcessingFilter和AuthenticationManager。
我的方向正确吗? XML 配置可能是什么?
【问题讨论】:
标签: spring-security
您想接受其他代理人的身份断言?很公平;在某些情况下这是有意义的。但是,您必须验证这些断言;有很多方法可以做到这一点,这里有一些:
最简单的方法可能是编写自己的AuthenticationProvider,其工作是查看提供的凭据(REMOTE_USER 字段以及在您的案例中声明它的人)并决定是否构建Authentication目的。如果不是,它应该抛出一个异常。您像这样注册您的身份验证提供程序(假设它是一个名为 myAuthProvider 的 bean):
<security:authentication-manager>
<security:authentication-provider ref="myAuthProvider" />
</security:authentication-manager>
正如我所说,您需要有一个身份验证提供程序。如果用户名是通过 HTTP 标头提供的,而您只是要信任它,那么您实际上处于所谓的预身份验证案例中(即,还有其他事情为您完成了身份验证步骤)。 Spring Security 文档有一个whole chapter on this,以 Siteminder 为例:只需更改标头名称即可。 (好吧,您还需要一个用户详细信息服务,以便您可以从经过身份验证的用户映射到他们被授予的权限集,但这是一个完整的“另一回事。”
【讨论】: