0

嗨,我是 Spring Security 的新手。使用 3.1 版本。我有一个旧的 sso url,如果用户通过身份验证,它会询问用户名/密码并设置 cookie。

我能够使用自定义过滤器和自定义身份验证入口点对用户进行身份验证。我无法理解的是,假设我的原始请求是 ../myPage,并且 customauthentication 过滤器具有 defaultProcessingUrl ../myFilter,当用户从自定义 sso url 重定向到我的应用程序时(假设我将 myfilter 路径作为旧 sso 的参数以在成功验证后重定向),当我在实时模式下使用具有非粘性会话的服务器时,如何检索原始请求 URL。

据我了解 ExceptionTranslationFilters 使用 httpsession 属性来保存触发身份验证入口点的原始 url,但是如果实时服务器重定向可能最终在另一台服务器上?

一种选择是对自定义过滤器使用“/**”模式并将 orig req 传递给 sso lega y url 以进行重定向?但在这种情况下,创建遗留 url 的逻辑将在自定义过滤器身份验证失败处理程序和自定义身份验证点中复制。

有什么建议么 ?

4

1 回答 1

0

假设:您的旧 SSO 的工作方式与 Siteminder ( http://en.wikipedia.org/wiki/Identity_management_system )不同

ExceptionTranslationFilter 不保存触发身份验证入口点的 url。身份验证过滤器和身份验证入口点负责对此进行管理。请查看 LoginUrlAuthenticationEntryPoint 的示例。在您的情况下,您应该实现自己的 LegacySSOFilter 和 LegacySSOEntryPoint。LegacySSOEntryPoint 将重定向到 Legacy SSO 服务器,并在用户身份验证后重定向回原始应用程序。

请注意,您应该为重定向回原始应用程序提供经过身份验证的用户名(以安全的方式进行) LegacySSOFilter 应该采用用户名并类似于 Siteminder 过滤器对用户进行身份验证:http://static.springsource。 org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6295

于 2013-07-23T07:55:27.953 回答