【问题标题】:Adding new Spring Social connections to the same user向同一用户添加新的 Spring Social 连接
【发布时间】:2017-07-28 03:06:00
【问题描述】:

我正在使用 Spring Social 以及 Spring Boot 和 Spring Security。我使用 Spring Social 为我们的 Web 服务提供身份验证。这是使用SocialAuthenticationFilter 方法完成的。

我正在尝试支持让单个用户(即org.springframework.security.core.userdetails.UserDetails)拥有多个 Spring Social 连接的能力。这样,用户可以使用他的 Google 凭据或 Facebook 凭据登录。

如果我直接进入我的数据库,我可以进行此配置。然后我可以为不同的 Spring Social 连接登录同一个 Spring Security 帐户。问题是用户添加新连接的点。假设我通过 Google 帐户登录并希望添加 Facebook,我将给出一个示例。

我通过 Google 登录。然后,如果我加载我的 Spring Security formLogin().loginPage() 或直接访问 auth/facebook(标准 Spring Social Facebook 登录 URL),我可以执行 Facebook 身份验证。但是,结果是我当前的Authentication 对象(来自SecurityContextHolder.getContext().getAuthentication())是匿名身份验证用户。这确实有道理,因为我刚刚使用 Facebook 登录。但同时我想知道我已登录,以便我可以询问用户有关连接帐户和设置数据库的问题。

我如何提供让经过身份验证的用户向其用户帐户添加新社交帐户的功能?此外,我不依赖于添加新连接的特定工作流程;以上只是我的第一组实验。

  • 春季社交 1.1.4
  • Spring Boot 1.3.8
  • Spring 安全性和 MVC - 作为 由 Spring Boot 1.3.8 指定

更新

根据 Jerome 的建议,我从 Spring Security 调试中提取了安全过滤器链:

Security filter chain: [
  WebAsyncManagerIntegrationFilter
  SecurityContextPersistenceFilter
  HeaderWriterFilter
  CsrfFilter
  LogoutFilter
  SocialAuthenticationFilter
  UsernamePasswordAuthenticationFilter
  RequestCacheAwareFilter
  SecurityContextHolderAwareRequestFilter
  AnonymousAuthenticationFilter
  SessionManagementFilter
  ExceptionTranslationFilter
  FilterSecurityInterceptor
]

【问题讨论】:

    标签: java spring spring-mvc spring-security spring-social


    【解决方案1】:

    这可能不是 Spring Social 的问题,而是 Spring Security 的问题。如果您让匿名用户登录,则意味着AnonymousAuthenticationFilter 比您先登录,或者SocialAuthenticationFilter

    切换spring security进行调试:

    @EnableWebSecurity
    public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
    
      @Override
      public void configure(WebSecurity web) throws Exception {
        web.debug(true);
      }
    }
    

    并检查涉及哪些过滤器。我很确定你有匿名过滤器,它可以过滤掉不需要的路径。

    【讨论】:

    • 感谢您的建议。我启用了 Spring Security 的调试并找到了过滤器链。我把它放在我的问题中。但是,SocialAuthenticationFilter 确实出现在 AnonymousAuthenticationFilter 之前。
    猜你喜欢
    • 2015-10-19
    • 2015-01-07
    • 2018-01-29
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多