一、名词定义:
资源 Resource
资源所有者 Resource Owner
资源服务器 Resource Server
认证服务器 Authenticate Server
客户端 Client
客户端对应的服务器 ClientServer
二、用例
淘宝获取用户信息、github获取用户信息、用户授权快递员门禁码送快递
三、前提:
客户端系统 先在 【认证服务器 Authenticate Server】 注册 得到 appId 和 appSecret
四、方式:
1、授权码方式
推荐,安全性最高。需要有服务器支撑
2、简单方式
安全度比较低,前端应用。不需要服务器。
3、账号密码方式
用户比较信息服务方,把账号密码交由第三方,由第三方访问资源服务器
4、客户端方式
严格说不属于Oauth,不需要用户授权,客户端直接访问资源服务器。
五、授权码方式流程
0、客户端系统 先在 【认证服务器 Authenticate Server】 注册 得到 appId 和 appSecret
1、【资源所有者 Resource Owner】 使用 【客户端 Client】,需要用到 【资源服务器 Resource Server】 的资源
2、【资源服务器 Resource Server】把请求导向【认证服务器 Authenticate Server】
3、【认证服务器 Authenticate Server】 验证appId 后,让 【资源所有者 Resource Owner】输入账号密码进行授权
4、【资源所有者 Resource Owner】 同意后,【认证服务器 Authenticate Server】 返回authenticate_code 到 callbackUrl
5、【客户端对应的服务器 ClientServer】 使用 authenticate_code 去【认证服务器 Authenticate Server】 换取access_token
6、【认证服务器 Authenticate Server】 验证appId、appSecret、authenticate后发放access_token 给 【客户端对应的服务器 ClientServer】
7、【客户端对应的服务器 ClientServer】 拿 access_token 去 资源服务器 Resource Server获取 资源 Resource
8、【资源服务器 Resource Server】 返回数据 给 【客户端对应的服务器 ClientServer】