使用Spring Security进行外部认证

时间:2011-10-17 14:47:43

标签: spring-security

我们有自己的中央会话管理。通常,用户可以使用用户名和密码对其进行身份验证,因此他获得了session_id。所有其他操作都使用该session_id完成。假设会话管理由XML RPC访问。

我有两个案例要实施:

  • 在Spring中制作的中央Web应用程序,其登录形式为
  • 依赖于Spring的外部Web应用程序 仅传递了session_id。

关于系统的更多通知:
- session_id存储在cookie中(成功登录后,我必须在响应中添加cookie)
- 每个页面请求都必须检查会话管理系统中的session_id有效性

我对Spring很陌生,所以我很难理解在哪里以及如何实现我的自定义逻辑。

我的问题是:

  1. 我必须实现系统的哪些部分才能拥有自己的登录信息 逻辑(也可以访问响应对象 - 设置cookie)? 我试着扩展UsernamePasswordAuthenticationFilter并实现我自己的东西 AuthenticationManager,但我不确定我是否正确 方式。

  2. 是否有点/我如何实现“每个请求会话”     检查“以Spring安全方式?

1 个答案:

答案 0 :(得分:0)

  • session_id存储在cookie中(成功登录后,我必须将cookie添加到响应中)

在配置到<form-login>元素的AuthenticationSuccessHandler中执行此操作:

<form-login authentication-success-handler-ref="authenticationSuccessHandler"/>
  • 外部Web应用程序也在Spring中生成,它们仅依赖于传递的session_id。

创建一个新的过滤器,您可以在其中检查session_id cookie。如果cookie不存在或者无效,则重定向到中央Web应用程序以供用户登录。如果cookie存在且有效且用户尚未经过身份验证,则创建新的Authentication并添加它到SecurityContextHolder

请查看RememberMeAuthenticationFilter.doFilter(),了解您希望在过滤器中执行的操作的示例。

使用<custom-filter>元素将此过滤器添加到过滤器链。