Spring SSO和帐户创建

时间:2018-02-23 18:34:26

标签: spring oauth single-sign-on

所以我正在开展一个大学项目,我的团队需要创建一个Android应用程序,该应用程序通过spring与后端构建进行对话。到目前为止,我们一直在使用JWT进行用户身份验证/授权,一切都很好,花花公子。但是,我们的客户想要与谷歌和Facebook进行单点登录,当然仍然可以创建一个帐户,就像这个表格一样(但是在Android上,而不是浏览器)。

我上个月花了大量时间研究和谷歌搜索如何做到这一点,特别是它应该如何与Android应用程序集成。我觉得我错过了一个关键点,因为我到处都看到了这一点,所以我认为这并不难。据我所知,我可以有两个端点:login / google,login / facebook获得授权服务器授权。我有,我遵循了这个指南,我理解它的70%。

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

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

同样,我觉得我在这里错过了一个关键点,而且我只是在努力地困惑自己。如果你们能为我清理一切,我将非常感激!!

PS:我做了大量的研究并阅读了很多指南,其中大部分都是基本的...我不是在找任何人给我写代码,我正在寻找有人解释整个事情应该如何运作。

1 个答案:

答案 0 :(得分:0)

有几件事

  1. 您希望与任何社交提供商(如google / fb)整合spring-social。按照教程添加依赖项并进行配置 请参阅https://github.com/spring-projects/spring-social/wiki/quick-start
  2. 如果您还希望用户创建自己的帐户,则不需要授权服务器。您需要的是具有配置的弹簧安全香草表单设置
  3. 这样的东西
    @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逻辑..你不应该自己实现这些东西。
    2. 我希望这对一些人有所帮助,你提出的这些问题非常广泛......但希望它会让你到达某个地方。