我有一个独特的场景,我试图在Spring Security插件(版本1.2.7.3,如果是currious)的约束下解决。我已经创建了一个自定义的SSO插件,允许用签名的URL登录。自定义插件效果很好,我根据文档添加了resources.groovy中的beans并添加到BootStrap.groovy中的过滤器链中。如何有条件地跳过Grails Spring Security插件筛选器链中的SecurityContextPersistenceFilter过滤器
SpringSecurityUtils.clientRegisterFilter('ssoFilter', SecurityFilterPosition.SECURITY_CONTEXT_FILTER.order + 10)
一旦一切都签订了用户的伟大工程,已添加到安全上下文的现有活动会话验证用户。
我有一个使用案例,可能已经通过身份验证的用户可能会在SSO请求上与不同用户在同一浏览器(即同一会话cookie)上回来。我希望过滤器链在URL的查询字符串中注意'sso = true'。
我现在看到的行为是SSO从未到达,因为原始用户已经通过安全上下文进行身份验证。我无法在SecurityContextPersistenceFilter之前添加SSO过滤器,因为这会导致SSO过滤器不断被击中而实际上没有任何呈现的问题。这跟随文档,我看到它说你不应该把任何过滤器放在安全上下文过滤器之前。
我看着特别为使用URL创建一个特殊的过滤器链“SSO =真”(什么我通过添加自定义RequestMatcher和AuthenticationEntryPoint落实到DelegatingAuthenticationEntryPoint未经验证的流程中做)使用springsecurity.filterChain。 chainMap配置说。但是,从文档和实验看来,只有路径被过滤。
有没有一种方法可以确保只要在URL上看到'sso = true',在仍然具有安全上下文可用性的情况下击中了SSO筛选器,或者SecurityContextPersistenceFilter可以将请求传递给SSO筛选器?