OAuth2协议

流程

例如,要用微信账号登录百度。

四个角色:

  • Resource Owner(资源所有者),用户本人
  • Client(客户端),想访问用户资源的应用
  • Authorization Server(授权服务器),微信授权中心
  • Resource Server(资源服务器),微信用户信息中心

步骤:

用户点击微信第三方登录,客户端发起三方登录,拉起微信跳转到微信的授权登录页,用户点击授权,微信授权中心返回授权码Authorization Code,客户端后台利用授权码、appId、appSecret请求微信获取token,客户端再用token请求微信用户中心获取用户信息。

Q:为什么不直接返回token,而要先返回授权码?

A:因为直接返回token浏览器里能直接获取到,容易被窃取。用授权码即便被窃取,没有appSecret没有用。

OAuth2的优点

  • 用户不需要把密码给第三方
  • 第三方只能获得有限权限
  • 可以随时撤销授权