SpringSocial和OAuth协议开发第三方登陆

1.OAuth协议简介

通过令牌解决密码泄露问题是OAuth的使命

OAuth角色流程

1,服务提供商(Provider),提供令牌的应用。

  1认证服务器(Authorization Server) 发出去token

  2资源服务器(Resource Server) 验证token发资源

2,资源所有者(Resource Owner),就是用户

3,第三方应用(Client),想获取用户信息的应用。

流程

这是常用的四种授权模式中的授权码模式,特点是是用户在认证服务器上认证的,保证认证的正确性,如果是第三方应用向认证服务器发送认证请求,可能是伪造的,但是用户直接去认证可以避免。还有就是这个认证服务器会先发一个授权码给第三方应用服务器,然后第三方服务器会带着这个授权码去请求令牌,这样就要求第三方应用要有一个服务器,同样也是提高安全性,因为这样就会让第三方将令牌放到服务端,用户客户端不可见,还有一种简化模式是不需要这个授权码的,当然这样相对就会不安全。

2.SpringSocial

当springsocial通过令牌拿取用户信息并且构建Authentication放入SecurityContext的时候,就表示用户登陆了,而上面这幅图里面的流程是别SpringSecurity封装到一个SocialAuthenticationFilter的过滤器里面了

代码实现:

1ServiceProvider接口是由服务提供商负责实现的,OAuth2Operations接口负责流程里面1-5步的操作api接口是用来方便用户自定义信息的接口,

2connection是封装用户信息的实例,它是由ConnectionFactory创建的,ConnectionFactory里面要有服务提供的信息,所以要有ServiceProvider去走完它的流程。apiAdapter是负责将不同的服务提供商提供的信息整合成标准的connection。然后就是对应关系,DB UserConnection负责存储用户的对应关系,然后操作这个UserConnection是UserConnectionRespository。

到此只是完成了获取qq等应用的授权令牌,但是并没有将token放到springsecurity里面进行登陆验证,下面开始走完springsecurity完成登陆过程

 springsocialoauth开发token验证方式,适用pc前后端分离和移动app的用户验证。

zhumiao
原文地址:https://www.cnblogs.com/zhumiao/p/9894363.html