虽然接触过些OAuth和RESTful,但是一直有比较模糊,很多平台都提供RESTful API,多数都有获取access_token这一步:http://mp.weixin.qq.com/wiki/11/0e4b294685f817b95cbed85ba5e82b8f.html
阿里的也是类似的:https://docs.aliyun.com/?spm=5176.100054.3.1.xA5vdO#/pub/ecs/open-api/requestmethod&signature
假如我想实现一个REST API,去百度应该如何去搜索?对OAuth和REST不是很理解。
REST 本来是利用的http这种无状态的协议;我获取到signature或者是access_token了,这样还算无状态吗?
OAuth是授权/鉴权方式 REST是一种HTTP资源URI
OAuth2.0(开放授权)是一个开放标准,用户授权后,第三方应用无需获取用户的用户名和密码就可以访问该用户在某一网站上存储的私密的资源。
http://tools.ietf.org/html/rfc6749
The OAuth 2.0 Authorization Framework
Abstract
The OAuth 2.0 authorization framework enables a third-party
application to obtain limited access to an HTTP service, either on
behalf of a resource owner by orchestrating an approval interaction
between the resource owner and the HTTP service, or by allowing the
third-party application to obtain access on its own behalf. This
specification replaces and obsoletes the OAuth 1.0 protocol described
in RFC 5849.
http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E
OAuth2.0较1.0相比,整个授权验证流程更简单更安全,也是未来最主要的用户身份验证和授权方式。
关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。
(1) Third-party application:第三方应用程序,又称”客户端”(client)。
(2)HTTP service:HTTP服务提供商,简称”服务提供商”。
(3)Resource Owner:资源所有者,又称”用户”(user)。
(4)User Agent:用户代理,就是指浏览器。
(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。
- 第三方应用要求新浪微博用户给予授权。
- 登录新浪微博给予授权Token。
- 第三方应用用获取的授权,向认证服务器申请Access Token。
- Authorization Server 对应用程序(客户端)进行认证后,返回授权Token。
- 应用程序使用令牌(Token),向服务器申请获取受保护的资源。
- 资源服务器确认Token正确,向应用开放资源。
接口文档接口 说明 OAuth2/authorize 请求用户授权Token OAuth2/access_token 获取授权过的Access Token OAuth2/get_token_info 授权信息查询接口 OAuth2/revokeoauth2 授权回收接口 OAuth2/get_oauth2_token OAuth1.0的Access Token更换至OAuth2.0的Access Token
看新浪微的api,可以理解OAuth可以基于REST来实现,主要用于让第三方网站或者应用实现访问自身网站的某些需要身份验证以后才能访问的资源(资源在rest里体现为uri);还是说这些只是HTTP API,符合REST特性而已。
其他开放平台:
http://developer.baidu.com/wiki/index.php?title=docs/oauth
http://wiki.open.qq.com/wiki/mobile/OAuth2.0%E7%AE%80%E4%BB%8B