Spring Social开发第三方登录----OAuth协议简介

一、为什么需要OAuth协议?

在用户使用社交软件(微信等)登录第三方应用账号时,考虑到用户安全性问题:

1.如果用户将社交软件(如:微信、QQ)的账号密码告知服务端,服务端将获取微信、QQ上的所有数据(包括好友列表、朋友圈、聊天记录图片等隐私数据),安全性无法得到保障。

2.若用户打算终止授权,需要手动修改密码才能实现(对用户十分不友好)。

3.密码容易泄露。

4.需要一种机制,用户不必将社交软件的用户名密码告知服务器,而是提交一种协议规定的Token令牌,实现不同数据模块的授权(如:头像信息授权、昵称信息授权等),同时Token还包含有效期,一旦过期则终止授权。

二、OAuth协议运行流程:

服务提供商(Provider):社交软件提供(微信)

资源所有者(Resource Owner):用户

第三方应用(Client):程序员开发的第三方应用

认证服务器(Authorization Server):社交软件提供(微信),验证用户身份,产生令牌Token

资源服务器(Resource Server):社交软件提供(微信),保存用户数据(自拍),验证令牌

Spring Social开发第三方登录----OAuth协议简介

三、OAuth协议中的授权模式

在上图的第2步中,用户授权可以有4种方式:

1.授权码模式(最常见,功能最完整,微信、微博、QQ等)

Spring Social开发第三方登录----OAuth协议简介

2.简化模式
3.密码模式
4.客户端模式