什么是OAuth2.0协议
OAuth2.0协议是一个开放标准,允许用户授权第三方程序访问他们存储在另外的服务提供者上的信息,而不需要将用户和密码提供给第三方应用或分享他们数据的所有内容。
举一个例子:以我们使用QQ登录直播平台为例
我们想要在某平台看直播,但是我们又不想注册账号,所以我们选择使用QQ登录
这时会出现请求授权页面,我们点击授权,然后就以QQ登录上了直播平台
这便是OAuth协议的具体应用,QQ中存储了我的个人信息,如果直播平台想要获取这些信息就要经过QQ的安保系统,所以需要得到我们的授权,我们选择同意授权,然后直播平台才能获得QQ中自己的个人信息。
令牌和密码
我们授权给第三方应用的一般是一个令牌,第三方平台通过这个令牌代替密码来进入系统。
密码和令牌的差异
- 令牌是短期的,可以设置失效时间,而密码如果用户不修改,那么一般是长期有效不会发生变化的
- 令牌可以被数据所有者撤销,但密码一般不允许撤销
- 令牌有权限范围而密码一般是完整权限
OAuth2.0的四种授权模式
1. 授权码模式
第三方应用先获取一个授权码,然后通过授权码去获取令牌。
2. 隐藏式
允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)“隐藏式”(implicit)。
用于纯前端应用没有后端,必须把令牌存储在前端
与授权码模式相比少了用授权码换令牌的过程
、
3.密码式
适用于高度信任的应用,直接把账号密码给该应用然后该应用使用你的账号密码去申请令牌
4. 凭证式
适用于没有前端的命令行应用,即在命令行下请求令牌。
这种方式给出的令牌,是针对第三方应用的,而不是针对用户的,即有可能多个用户共享同一个令牌
参考 阮老师的个人博客