之前一篇文章介绍了OAuth协议的基本概念,这篇就来举个具体的应用实例吧,照旧还是用dropbox。
- 每一个使用dropbox api的应用都可以在官网上申请到一对(key,secret)信息,假设为:
Client Identifier = dpf43f3p2l4k3l03 Client Shared-Secret = kd94hf93k423kf44 (HMAC-SHA1会用到)
- Temporary Credential Request过程,dropbox提供的URL为https://api.dropbox.com/0/oauth/request_token,是建立在安全传输协议上的。
- client生成请求字符串:
GET&https%3A%2F%2Fapi.dropbox.com%2F0%2Foauth%2Frequest_token&
oauth_consumer_key%3Ddpf43f3p2l4k3l03%26
oauth_nonce%3D01408443%26
oauth_signature_method%3DHMAC-SHA1%26
oauth_timestamp%3D1298386060%26
oauth_version%3D1.0
- 用shared-secret对此字符串加密并签名(末尾加了一个'&')
- 最终的请求格式如下:
Authorization: OAuth realm="",
oauth_nonce="01408443",
oauth_timestamp="1298386060",
oauth_consumer_key="dpf43f3p2l4k3l03",
oauth_signature_method="HMAC-SHA1",
oauth_version="1.0",
oauth_signature="N0NYBBJn956BZ16bWH2gEjrqYqM%3D"
- server返回:
oauth_token_secret=u245rhlyg6vlqlf&oauth_token=q3n1yqeeujpv04z
- 重定向resource owner到认证URL下进行身份的认证,dropbox的认证URL为:https://www.dropbox.com/0/oauth/authorize。
https://www.dropbox.com/0/oauth/authorize?oauth_token=q3n1yqeeujpv04z&oauth_callback=http%3A%2F%2Fwww.fakeang.me oauth_callback指定了在验证完resource owner之后跳转的URL,这里会重定向到我的blog地址
http://www.fakeang.me/?uid=10537346&oauth_token=q3n1yqeeujpv04z
uid是对resource owner的verifier信息
- Access Token Request过程,和之前的Temporary Credential Request认证过程比较相似,dropbox的验证地址为:https://api.dropbox.com/0/oauth/access_token
- 请求格式会增加两项:
- oauth_token=q3n1yqeeujpv04z
- oauth_verifier=10537346
- 用shared-secret+‘&’+(oauth_token_secret)u245rhlyg6vlqlf加密
- 返回用于访问resource的token和密钥访问资源时和Temporary Credential Request过程也类似,只不过会使用access token
最后附上OAuth1.0协议RFC文档地址:
RFC5849
No comments :
Post a Comment