什么是OAuth
oauth官网 对其的定义:
An open protocol to allow secure API authorization in a simple andstandard method from desktop and web applications.
从oauth的维基百科(http://zh.wikipedia.org/wiki/OAuth)看到:
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。
OAuth是OpenID的一个补充,但是完全不同的服务。
认证和授权过程
在认证和授权的过程中涉及的三方包括:
服务提供方,用户使用服务提供方来存储受保护的资源,如照片,视频,联系人列表。
用户,存放在服务提供方的受保护的资源的拥有者。
客户端,要访问服务提供方资源的第三方应用,通常是网站,如提供照片打印服务的网站。在认证过程之前,客户端要向服务提供者申请客户端标识。
使用OAuth进行认证和授权的过程如下所示:
1.用户访问客户端的网站,想操作用户存放在服务提供方的资源。
2.客户端向服务提供方请求一个临时令牌。
3.服务提供方验证客户端的身份后,授予一个临时令牌。
4.客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给服务提供方。
5.用户在服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。
6.授权成功后,服务提供方引导用户返回客户端的网页。
7.客户端根据临时令牌从服务提供方那里获取访问令牌。
8.服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。
9.客户端使用获取的访问令牌访问存放在服务提供方上的受保护的资源
如下图所示:
Oauth的发展历史
1.2007年12月4日发布了 OAuth Core1.0
此版本的协议存在严重的安全漏洞: OAuth SecurityAdvisory: 2009.1
更详细的介绍可以参考:Explaining theOAuth Session Fixation Attack。
2.2009年6月24日发布了OAuth Core 1.0Revision A:
此版本的协议修复了前一版本的安全漏洞,并成为RFC5849
我们现在使用的OAuth版本大部分以此版本为基础。
3.Oauth2.0
OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。 OAuth2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程
OAuth和OpenID的区别
OAuth关注的是authorization;而OpenID侧重的是authentication。从表面上看,这两个英文单词很容易混淆,但实际上,它们的含义有本质的区别:
authorization:n. 授权,认可;批准,委任
authentication:n. 证明;鉴定;证实
OAuth关注的是授权,即:“用户能做什么”;而OpenID关注的是证明,即:“用户是谁”。
如果混淆了OAuth和OpenID的含义,后果很严重
Oauth相关资源
由于我使用最多的开发语言是php故这里只介绍相关oauth的php部分资源
1.Beginner’sGuide to OAuth
2.官网相关代码资源
3.oauth-php
4.Kohana OAuth 2.0服务端/客户端 module
oauth官网 对其的定义:
An open protocol to allow secure API authorization in a simple andstandard method from desktop and web applications.
从oauth的维基百科(http://zh.wikipedia.org/wiki/OAuth)看到:
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。
OAuth是OpenID的一个补充,但是完全不同的服务。
认证和授权过程
在认证和授权的过程中涉及的三方包括:
服务提供方,用户使用服务提供方来存储受保护的资源,如照片,视频,联系人列表。
用户,存放在服务提供方的受保护的资源的拥有者。
客户端,要访问服务提供方资源的第三方应用,通常是网站,如提供照片打印服务的网站。在认证过程之前,客户端要向服务提供者申请客户端标识。
使用OAuth进行认证和授权的过程如下所示:
1.用户访问客户端的网站,想操作用户存放在服务提供方的资源。
2.客户端向服务提供方请求一个临时令牌。
3.服务提供方验证客户端的身份后,授予一个临时令牌。
4.客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给服务提供方。
5.用户在服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。
6.授权成功后,服务提供方引导用户返回客户端的网页。
7.客户端根据临时令牌从服务提供方那里获取访问令牌。
8.服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。
9.客户端使用获取的访问令牌访问存放在服务提供方上的受保护的资源
如下图所示:
Oauth的发展历史
1.2007年12月4日发布了 OAuth Core1.0
此版本的协议存在严重的安全漏洞: OAuth SecurityAdvisory: 2009.1
更详细的介绍可以参考:Explaining theOAuth Session Fixation Attack。
2.2009年6月24日发布了OAuth Core 1.0Revision A:
此版本的协议修复了前一版本的安全漏洞,并成为RFC5849
我们现在使用的OAuth版本大部分以此版本为基础。
3.Oauth2.0
OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。 OAuth2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程
OAuth和OpenID的区别
OAuth关注的是authorization;而OpenID侧重的是authentication。从表面上看,这两个英文单词很容易混淆,但实际上,它们的含义有本质的区别:
authorization:n. 授权,认可;批准,委任
authentication:n. 证明;鉴定;证实
OAuth关注的是授权,即:“用户能做什么”;而OpenID关注的是证明,即:“用户是谁”。
如果混淆了OAuth和OpenID的含义,后果很严重
Oauth相关资源
由于我使用最多的开发语言是php故这里只介绍相关oauth的php部分资源
1.Beginner’sGuide to OAuth
2.官网相关代码资源
3.oauth-php
4.Kohana OAuth 2.0服务端/客户端 module