Spring security Spring Security 3远程用户自定义身份验证

Spring security Spring Security 3远程用户自定义身份验证,spring-security,Spring Security,我需要使用SpringSecurity3.0.5实现自定义安全方案 用户必须通过请求中的REMOTE\u user字段自动验证(无任何登录表单)。似乎我必须实现定制的AbstractAuthenticationProcessingFilter和AuthenticationManager 我走的方向对吗?XML配置可能是什么?您想要接受其他代理所做的身份断言?足够公平;在某些情况下,这是有意义的。但是,您必须验证这些断言;有很多方法可以做到这一点,以下是一些: 如果您与断言实体共享一个数据库,则

我需要使用SpringSecurity3.0.5实现自定义安全方案

用户必须通过请求中的
REMOTE\u user
字段自动验证(无任何登录表单)。似乎我必须实现定制的
AbstractAuthenticationProcessingFilter
AuthenticationManager


我走的方向对吗?XML配置可能是什么?

您想要接受其他代理所做的身份断言?足够公平;在某些情况下,这是有意义的。但是,您必须验证这些断言;有很多方法可以做到这一点,以下是一些:

  • 如果您与断言实体共享一个数据库,则可以检查幻数
  • 您可以使用加密签名
  • 您可以检查消息是否来自允许进行此类断言的主机,该主机应该位于您控制的网络内,并且您也可以控制其间的路径,这很容易做到,但却是您需要记录的关键部署因素
最简单的方法可能是编写您自己的
AuthenticationProvider
,其工作是查看提供的凭据(在您的案例中,
REMOTE\u USER
字段和断言者),并决定是否构建
Authentication
对象。如果不是,它应该抛出一个异常。您可以按如下方式注册身份验证提供程序(假设它是一个名为
myAuthProvider
)的bean:



正如我所说,您需要一个身份验证提供者。如果用户名是通过HTTP头提供的,而您只是想信任它,那么您实际上处于所谓的预验证情况中(即,在验证步骤中还有其他一些事情为您完成)。Spring安全文档中有一个使用Siteminder的例子:只需更改头名称,它就可以工作了。(好吧,你还需要一个用户详细信息服务,这样你就可以从经过身份验证的用户映射到他们被授予的权限集,但这完全是另一回事。)

非常感谢你,看来这种预身份验证场景正是我需要做的。我会试试的@从不:很高兴能帮上忙。不过要小心:很容易出现安全性错误,并意外地将东西打开(从经验中说!)。一旦部署,您就必须对其进行测试,还必须使用未经身份验证的客户端进行测试。