OAuth2 常用授权模式
OAuth 是一个开放标准,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头像、照片、视频等),而在这个过程中无需将用户名和密码提供给第三方应用。实现这一功能是通过提供一个令牌(token),而不是用户名和密码来访问他们存放在特定服务提供者的数据。
采用令牌(token)的方式可以让用户灵活的对第三方应用授权或者收回权限。
互联网应用中最常见的 OAuth2 就是各种第三方登录,例如:QQ 授权登录、微信授权登录等。它们允许用户通过 QQ 或微信账号来登录其他网站或应用,而不需要为这些网站或应用创建新的账户。这些流程帮助开发者利用 QQ 和微信的大量用户基础,简化登录过程,同时为用户提供便利。
授权码模式
这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。
参与角色:客户端、认证中心,客户端负责拿令牌,认证中心负责发放令牌。
不是所有客户端都有权限请求令牌,需要事先在认证中心申请,比如微信并不是所有网站都能直接接入,而是要去微信后台开通这个权限。
至少要提前向认证中心申请的几个参数如下:
- client_id:客户端唯一 id,认证中心颁发的唯一标识
- client_secret:客户端的秘钥,相当于密码
- scope:客户端的权限
- redirect_uri:授权码模式使用的跳转 uri,需要事先告知认证中心。
请求授权码
/oauth/authorize?client_id=&response_type=code