HTTP API认证与授权(六) - OAuth 1.0
1. Intro
API认证协议,主要是为了做委托授权的。应用场景,比如用户想用第三方服务商来打印照片,访问其云存储,但是不想把用户名密码给这家第三方公司。
在这个模型当中,client可以代表资源的拥有者去做一些事情,也就是说,OAuth需要不仅能够确认证实资源拥有者得到授权认证,并且需要能够识别出提出请求的客户端的身份。
为了让客户端去访问资源:
- 得到资源拥有者的许可 - 终端用户授权给客户端去访问服务器资源的流程
- 去服务器访问资源 - 利用两个证书(用于识别客户端生成的请求和用于识别请求所代表的资源拥有者)来生成已认证的Http请求。
三个角色
- User 照片所有者 - 用户
- Consumer 第三方照片打印服务
- Service Provider 照片存储服务
协议的三个阶段
- Consumer 获取Request Token
- Service Provider认证用户并且授权Consumer
- Consumer获取Access Token调用API访问用户的照片
整个授权流程:
- Consumer(第三方照片打印服务)需要先上Service Provider获得开发的 Consumer Key 和 Consumer Secret
- 当 User 访问 Consumer 时,Consumer 向 Service Provider 发起请求请求Request Token (需要对HTTP请求签名)
- Service Provider 验明 Consumer 是注册过的第三方服务商后,返回 Request Token(oauth_token)和 Request Token Secret (oauth_token_secret)
- Consumer 收到 Request Token 后,使用HTTP GET 请求把 User 切到 Service Provider 的认证页上(其中带上Request Token),让用户输入他的用户和口令。
- Service Provider 认证 User 成功后,跳回 Consumer,并返回 Request Token (oauth_token)和 Verification Code(oauth_verifier)
- 接下来就是签名请求,用Request Token 和 Verification Code 换取 Access Token (oauth_token)和 Access Token Secret (oauth_token_secret)
- 最后使用Access Token访问用户授权访问的资源
Reference
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 stone2paul@gmail.com
文章标题:HTTP API认证与授权(六) - OAuth 1.0
文章字数:493
本文作者:Leilei Chen
发布时间:2020-02-01, 12:23:15
最后更新:2020-02-02, 14:06:57
原始链接:https://www.llchen60.com/HTTP-API%E8%AE%A4%E8%AF%81%E4%B8%8E%E6%8E%88%E6%9D%83-%E5%85%AD-OAuth-1-0/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。