Spring Social 基本原理

   上一篇文章中我们讲解了OAuth基本原理。这篇文章我们将讲一下OAuth和Spring Social之间的关系
  我们把上一章节中的图略微修改一下,也就是第六步获取自拍数据变成获取用户信息,Client获取到服务提供商的用户信息后,构建Authentication(在SpringSecurity中登录验证成功后就会生成Authentication)并放入到SecurityContext中,图中的第1-7步骤就构成了SpringSocial要做的事情。


  那么步骤1-7在SpringSocial中是怎么完成的呢?它提供了一些接口和默认的实现类,如下图所示:

1.ServiceProvider

  这个接口主要是完成步骤1-6,这个接口主要依靠OAuth2Operations和Api两个接口合作完成,SpringSocial提供了一个抽象类AbstractOAuth2ServiceProvider

1.1OAuth2Operations

  这个接口主要是完成步骤1-5,默认的实现类是OAuth2Template

1.2Api

  这个接口主要是用于获取服务提供商的用户信息也就是步骤6,SpringSocial提供了一个AbstractOAuth2Binding的抽象类

2.Connection

  Connection封装的是服务提供商中的用户信息,但是封装标准和Api从服务提供商获取的用户信息会有差别,所以会提供一个ApiAdapter这个接口来适配。Connection的一个默认实现是OAuth2Connection

3.ConnectionFactory

  用于创建Connection信息的接口,这个Factory包含了ServiceProvider接口和ApiAdapter接口,也就是这个Connection工程通过ServiceProvider获取用户信息,然后适用ApiAdapter来将获取到的用户信息封装为Connection。

4.UsersConnectionRepository

  我们获取到服务提供商的用户信息后,可能映射到我们业务系统的用户信息会有一些差别,比如我们从微信中获取到的openId是XXXXXX,但是在我们的业务系统中可能存储的对应用户是ZZM,那么这个时候我们就需要一个Repository帮我们做映射和存储。UsersConnectionRepository就是做这件事情的,它提供了一个默认实现JdbcUsersConnectionRepository。
  综上,SpringSocial提供了这些组件来帮助我们完成授权登录,这些组件被一个叫做SocialAuthenticationFilter的Spring Security过滤器使用,帮助我们完成开发第三方登录。如下图所示:



一个完整的登录请求处理流程如下:



这个流程对大家来说还比较抽象,我将在下一篇文章中开发一套QQ和微信的第三方登录来帮助大家理解。这里大家只需要记住SpringSocial中各个组件模块的作用就好。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用Spring Social开发第三方登录 OAuth协议简介 服务提供商 Provider 资源所有者 Res...
    云师兄阅读 1,272评论 1 3
  • 在OAuth协议中我们了解到了这个协议其实是一个授权协议,其目的是让用户在不将服务提供商的用户名密码提供给第三方应...
    一直想上树的猪阅读 7,922评论 0 3
  • 接着上文,谈到了表单登录和手机验证码登录,有时候我们需要使用第三方登录,那么这个和 SS 如何结合呢? OAth ...
    breezedancer阅读 1,552评论 0 50
  • 原文链接:https://www.cnblogs.com/neutra/archive/2012/07/26/26...
    苦苦修行阅读 1,331评论 0 6
  • 人生或许就是有许多个环组成的 来来去去,失去得到失去得到 有些人亲密亲密着就散了 有些人疏远疏远着又回来了 每个都...
    小鬼丹阅读 136评论 0 0