使用Spring Security 3和cookie

qal*_*ali 5 cookies spring-security

我有一个用Java构建的需要授权的应用程序.但是,身份验证部分由不同/单独的应用程序(不是Java)处理.用户登录到身份验证应用程序,该应用程序会设置cookie.如果用户被授权访问Java应用程序,则授权应用程序会将其重定向到Java应用程序的URL.

我想在允许访问Java应用程序之前使用Spring Security来验证/检查cookie.最好的方法是什么?Java应用程序应该在下面执行:

  1. 检查cookie是否存在
  2. 如果cookie存在,请使用db验证cookie值.如果没有,请将它们发送到其他应用程序登录
  3. 如果cookie有效,请显示应用程序.如果没有,请将用户发送到"身份验证"应用.

有任何想法吗?

Sim*_*eon 4

您可以通过制作自己的UsernamePasswordAuthenticationFilter. 在过滤器内,您可以检查您需要的 cookie。您应该只需要重写该attemptAuthentication()方法。那里有请求和响应对象,因此检查 cookie 应该很容易。

您还需要实现一个UserDetailsService来检查数据库的用户凭据。

  • 将帮助您自定义过滤器。
  • 就是如何编写一个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>
Run Code Online (Sandbox Code Playgroud)

<formLogin>如果您决定实施过滤器,也要小心不要使用。