流程
例如,要用微信账号登录百度。
四个角色:
- Resource Owner(资源所有者),用户本人
- Client(客户端),想访问用户资源的应用
- Authorization Server(授权服务器),微信授权中心
- Resource Server(资源服务器),微信用户信息中心
步骤:
用户点击微信第三方登录,客户端发起三方登录,拉起微信跳转到微信的授权登录页,用户点击授权,微信授权中心返回授权码Authorization Code,客户端后台利用授权码、appId、appSecret请求微信获取token,客户端再用token请求微信用户中心获取用户信息。
Q:为什么不直接返回token,而要先返回授权码?
A:因为直接返回token浏览器里能直接获取到,容易被窃取。用授权码即便被窃取,没有appSecret没有用。
OAuth2的优点
- 用户不需要把密码给第三方
- 第三方只能获得有限权限
- 可以随时撤销授权