【问题标题】:Spring SSO and account creationSpring SSO 和帐户创建
【发布时间】:2018-08-03 21:17:02
【问题描述】:

所以我正在从事一个大学项目,我的团队需要创建一个与 spring 后端构建对话的 android 应用程序。到目前为止,我们一直在使用 JWT 进行用户身份验证/授权,一切都很好。但是,我们的客户希望在 Google 和 Facebook 上进行单点登录,当然还可以创建一个帐户,就像这个表单一样(但在 android 上,而不是在浏览器上)。

上个月我一直在研究和谷歌搜索如何做到这一点,尤其是它应该如何与 android 应用程序集成。我觉得我错过了一个关键点,因为我到处都能看到这一点,所以我认为这并不难做到。据我了解,我可以有两个端点:登录/谷歌,登录/facebook 来获得授权服务器的授权。我有,我遵循了这个指南,我理解了 70% 的内容。

那么我的想法是让第一次登录的用户保存在我们的数据库中。我不完全确定如何做到这一点(因为我不完全确定 SSO 弹簧代码是如何工作的......)。我的主要问题是:

  • 如何同时使用 google/fb 进行社交登录以及使用凭据创建帐户/登录。
  • 如果用户要创建一个帐户,我是否有自己的授权服务器来存储凭据,或者我是否在主服务器上管理它。
  • 如何从 android 应用程序处理该问题?我是存储刷新令牌还是做其他事情?

【问题讨论】:

    标签: spring oauth single-sign-on


    【解决方案1】:

    有几件事

    1. 您希望为任何社交服务提供商(例如 google/fb)与 spring-social 集成。按照教程添加依赖和配置 见https://github.com/spring-projects/spring-social/wiki/quick-start
    2. 如果您还希望用户创建自己的帐户,则不需要授权服务器。您需要的是带有配置的 Spring Security vanilla 表单设置

    类似

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .formLogin()
                    .loginPage("/login/")
                    .loginProcessingUrl("/j_spring_security_check")
                    .usernameParameter("j_username")
                    .passwordParameter("j_password")
                    .successHandler(authenticationSuccessHandler())
                    .failureHandler(authenticationFailureHandler())
                    .permitAll()
                .and()
                .logout()
                    .logoutUrl("/logout")
                    .logoutSuccessHandler(logoutSuccessHandler())
                    .invalidateHttpSession(true)
    }
    
    1. 是的,但我建议你找到一个可以插入的 oauth 库。希望它会为你处理 refresh_token 逻辑。你不需要自己实现这些东西。

    我希望这对一些人有所帮助,您提出的这些问题非常广泛.. 但希望它能让您有所收获。

    【讨论】:

      猜你喜欢
      • 2012-06-08
      • 1970-01-01
      • 2022-08-16
      • 2011-09-19
      • 1970-01-01
      • 2020-10-15
      • 2017-07-17
      • 2016-03-20
      • 2015-06-02
      相关资源
      最近更新 更多