以Spring Security 3与饼干

问题描述:

我有一个Java构建需要授权的应用程序。但是,验证片由不同的/独立的应用程序(不是Java)处理。用户登录到认证应用程序,该应用程序设置一个cookie。如果用户有权访问Java应用程序,它们将被授权应用程序重定向到Java应用程序的URL。以Spring Security 3与饼干

我想使用Spring Security验证/允许访问Java应用程序之前检查Cookie。什么是最好的方法来做到这一点?在Java应用程序应该做如下:

  1. 检查,看是否cookie存在
  2. 如果cookie存在,与数据库验证cookie的值。如果不是,将其发送给其他应用程序登录
  3. 如果cookie是有效的,显示的应用程序。如果没有,请发送用户到“身份验证”应用程序。

任何想法?

+0

您是否已经在使用Spring Security?如果是这样的版本? – sourcedelica 2011-06-03 21:45:09

+0

没有。从Spring Security开始3 – qali 2011-06-06 13:01:42

您可以通过自己的UsernamePasswordAuthenticationFilter做到这一点。在过滤器内部,您可以检查您需要的cookie。您只需要覆盖attemptAuthentication()方法。您有请求和响应对象,因此检查cookie应该很容易。

您还需要实施UserDetailsService以检查数据库的用户凭据。

  • This将帮助您在自定义过滤器上。
  • This是怎么写的一个UserDetailsService

您的命名空间的配置应该是这个样子:

<http use-expressions="true" auto-config="false" entry-point-ref="yourEntryPointInApp1"> 

    <custom-filter position="FORM_LOGIN_FILTER" ref="myFilter" /> 
</http> 
<authentication-manager> 

    <authentication-provider user-service-ref="myDetailsService" /> 
</authentication-manager> 

另外要注意不要使用<formLogin>如果你决定实施过滤。

+0

@qali你以前用过春天吗?如果没有,我可以告诉你如何定义你的过滤器和细节服务bean。 – Simeon 2011-06-08 08:08:31

这种情况听起来像SAML或OpenID的。如果是这样的话,那么Spring Security中应该已经有插件了。如果这是一个自定义认证方案,也许你可以做一些类似于插件的工作,因为流程相似。

+0

是的,这是一个单独的认证方案。我会看看这些插件。 – qali 2011-06-06 13:02:37