原因:解决用户第三方应用访问其他服务的授权问题
第三方授权流程
场景:我要去小程序上点外卖,小程序需要我的微信绑定的电话号码
四种授权模式
授权码授权
详细过程:
- 用户访问应用页面
- 重定向到认证服务器
- 认证服务器展示授权页面
- 授权完成,然后认证服务器重定向到应用服务器,携带授权码code和client_id,然后利用client_id去后台查询对应资源服务器的client_secret
- 携带code、client_id、client_secret请求认证服务器
- 获取access_token和refresh_token,然后返回给应用服务器
- 验证Token,然后访问真正的页面
应用场景:常见的第三方应用授权
操作:用户只需要提供在认证服务器上授权页面的授权(未登录就登录,已登录就直接授权)
缺点:请求过于频繁
隐式授权
应用场景:对Token安全性要求不高(评价、问卷调查)
操作:用户需要在授权服务器上授权(未登录就登录,已登录就直接授权)
密码授权
应用场景:访问授权服务器需要携带用户的账号密码(自家公司开发的服务)
操作:用户需要利用账号密码直接登录
客户端凭证模式
应用场景:自家服务与服务之间API调用
操作:需要访问指定接口并携带资源服务器的认证信息(client_id和client_secret)