(1)初识Spring social

Spring social

1.Oauth存在的意义:

        给第三方有限的权限。

        权限是有期限的。

        密码不泄露。

        即不提供用户名密码的情况下赋予第三方有期限有限权限访问用户数据。

2.Oauth协议中的授权模式

关于第2步,同一授权有4种模式:授权码模式(主流),简化模式,密码模式,客户端模式

 (0)用户访问网站进行登陆,选择第三方账号进行登陆例如QQ。

扫描二维码关注公众号,回复: 1047612 查看本文章

  (1)咱们服务器接收到用户请求用第三方账号登陆后,将请求导向第三方的认证服务器。

  (2)用户看到认证登陆页面,并且点击同意登陆完成确认登陆。

  (3)认证服务器将信息返回服务器并包含授权码。

  (4)服务器根据返回来的授权码向认证服务器申请令牌。

  (5)认证服务器发放令牌。

  (6)咱们服务器拿到令牌去第三方服务资源服务器获取用户信息。

  (7)根据资源服务器返回的用户信息构建认证用户,使用户访问第三方功能。

3.Spring social开发第三方认证

    3.1ServiceProvider服务提供方

        (1)OAuth2Operations(OAuth2Template),帮助开发者快速完成OAuth2流程。

        (2)AbstractOAuth2ApiBinding,帮助开发者快速完成第6步获取用户信息。

   3.2 Connection 获取用户信息

   (1)Connection 即OAuth2Connection具体类。即第三方打交道获取用户信息。

   (2)Connection 是由OAuth2ConnectionFactory实现的。同时又依赖前5步与服务提供方的认证与授权,每个服务提供方提供的用户信息类型,字段等不同,所以需要ApiAdapter来适配每一个服务提供方提供的信息。

3.2 绑定用户与Connection

用户A登陆那么是用户A。用户B登陆是用户B。那么spring social怎么来维持这个关系。

Spring social在数据库维护了一张表UserConnection表。将业务系统用户表中的userId与服务提供方用户Connection的关系。我们通过UsersConnectionRepository来对UserConnection进行增删改查。

4.spring social表:

create table UserConnection (userId varchar(255) not null,

        providerId varchar(255) not null,

        providerUserId varchar(255),

        rank int not null,

        displayName varchar(255),

        profileUrl varchar(512),

        imageUrl varchar(512),

        accessToken varchar(512) not null,

        secret varchar(512),

        refreshToken varchar(512),

        expireTime bigint,

        primary key (userId, providerId, providerUserId));

create unique index UserConnectionRank on UserConnection(userId, providerId, rank);

猜你喜欢

转载自blog.csdn.net/u014172271/article/details/80262141