【转载请注明出处 谢谢】
来自http://www.cnblogs.com/webglcn/archive/2011/09/05/2167621.html
为调用微薄API做准备,现在QQ, 新浪,搜狐,Twitter等微薄所使用的协议。根据我的理解做了一些转译,直译读起来很痛苦。(文化差异 + 个人水平有限)。不对的地方还请大家指正。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
OAuth Core 1.0 Revision A
[原文] http://oauth.net/core/1.0a/#auth_header
1. 摘要
借助于OAuth 协议, 网站或应用程序(调用者)可以通过web service (发布者) API 来访问受保护的资源, 发布者不需要提供调用者其认证。OAuth为API认证提供了一套可自由实现且通用的方法。 举个例子,
printer.example.com(调用者) 这个网站提供的打印服务,能在没有提供认证的情况下,访问photos.example.net(发布者)上的私有照片。 OAuth 不要求特定的接口或交互方式,也不需要指明发布者是如何给用户(调用者)授权的,该协议非常适合调用者无法获得授权认证的情形,比如OpenID。 OAuth 目标是把web service授权认证的经验和实现方式统一成单一的社区驱动协议。OAuth 是在已有协议和已被其他网站验证的最佳实践基础上形成的。这个受到大大小小提供者支持的开放标准,为程序的开发者和使用者推广了一条一致且可信赖的经验。
3. 定义
Service Provider:发布者 - 可通过OAuth访问到的程序.
User: 用户- 有账号能访问应用程序的人
Consumer: 消费者,调用者 - 能帮助用户访问到Service Provider的程序
Protected Resource(s): 受保护资源 - 由发布者所有的资源,消费者可通过授权访问到。
Consumer Developer: 消费开发者 - 开发consumer的组织或个人
Consumer Key:- Consumer用来在Service Provider端表示自己的值
Consumer Secret: - 用来和Consumer Key建立对应关系。
Request Token: 请求标志 - Consumer从User获得的授权值,用以交换Access Token.
Access Token: 访问标志 - Consumer有权访问受保护资源的标志,替代以往用户的“服务提供者认证”。
Token Secret: 标志密码 - 以上标志对应的密码。
OAuth Protocol Parameters: 协议参数- 名字以oauth_开头的参数
4. 文档和注册
OAuth包含Consumer Key 和对应的 Consumer Secret,这两者使得Consumer 有权访问Service Provider,Consumer会根据自己的标示获得不同访问权限(比如无限制访问)。 除非Consumer 和 Service Provider以外任何人都知道Consumer Secret无法访问,否则Service Providers不应该通过Consumer Secret来验证Consumer 的身份。Consumer Secret 可能是空字串(比如当不需要Consumer验证 或者 已通过其他途径验证 比如RSA 的时候)
4.1. 请求URL(Request URL)
OAuth 定义了三种请求 URL:
Request Token URL:(请求标志)
URL 用来获得未授权的请求标志, 参见6.1.
User Authorization URL:(用户授权)
URL 用来获得用户授权,使得Consumer能进行访问 参见6.2.
Access Token URL: (访问标志)
URL 用来将用户已授权的Request Token和Acess Token进行交换 参见6.3.
这三种URL必须包含scheme, 授权和路径,还可能包括查询和片段([RFC3986] section 3有相关说明)。 Request URL的查询中一定不能包括任何OAuth协议相关参数. 比如 http://sp.example.com/authorize (Webglcn: 这里的authorize是协议么?)
4.2. (服务提供者)Service Providers
Service Provider 作用是让Consumer Developer 和 Consumer Key/Secret建立关系(Service Provider 创建Consumer Key/Secret, Consumer Developer开发者来使用). 这些配置的过程和要求由Service Provider决定。
Service Provider 提供的文档包括:
1。当发起OAuth 请求时Consumer要用到的URL, 以及调用Request Token URL 和 Access Token URL所需要使用的HTTP方法(比如 GET, POST, 等等.)
2。 Service Provider 支持的签名方法.
3。 用来获得一个标志的附加请求参数。 参数名不能已oauth_开头。
4.3. Consumers 消费者或调用者
Consumer的开发人员必须将 Consumer Key/Secret 和Service Provider建立联系。Consumer 开发人员在注册时可能需要向Service Provider 提供附加信息。
来自http://www.cnblogs.com/webglcn/archive/2011/09/05/2167621.html