第三方用户在规定时间内,访问某人在某服务器上共享的资源。html
OAuth的特色是“现场受权”或“在线受权”:客户端主要经过浏览器去访问资源,授 权时须要认证Alice的资源全部者身份,而且须要Alice现场审批。OAuth通常在SNS服务中普遍使用,如微博。web
IAM服务则不一样,它的特色是 “预先受权”或“离线受权”:客户端主要经过REST API方式去访问资源,资源全部者能够预先知道第三方应用所须要的资源请求,一次受权以后,不多会变动。IAM服务通常在云计算服务中使用,如AWS服 务、阿里云计算服务。浏览器
OAuth:安全
1.1协议的参与者
服务器
从引言部分的描述咱们能够看出,OAuth的参与实体至少有以下三个:
阿里云
· RO (resource owner): 资源全部者,对资源具备受权能力的人。如上文中的用户Alice。
云计算
· RS (resource server): 资源服务器,它存储资源,并处理对资源的访问请求。如Google资源服务器,它所保管的资源就是用户Alice的照片。
spa
· Client: 第三方应用,它得到RO的受权后即可以去访问RO的资源。如网易印像服务。orm
此外,为了支持开放受权功能以及更好地描述开放受权协议,OAuth引入了第四个参与实体:
server
· AS (authorization server): 受权服务器,它认证RO的身份,为RO提供受权审批流程,并最终颁发受权令牌(Access Token)。读者请注意,为了便于协议的描述,这里只是在逻辑上把AS与RS区分开来;在物理上,AS与RS的功能能够由同一个服务器来提供服务。
2.2 受权类型
在开放受权中,第三方应用(Client)多是一个Web站点,也多是在浏览器中运行的一段JavaScript代码,还多是安装在本地的一 个应用程序。这些第三方应用都有各自的安全特性。对于Web站点来讲,它与RO浏览器是分离的,它能够本身保存协议中的敏感数据,这些密钥能够不暴露给 RO;对于JavaScript代码和本地安全的应用程序来讲,它原本就运行在RO的浏览器中,RO是能够访问到Client在协议中的敏感数据。
OAuth为了支持这些不一样类型的第三方应用,提出了多种受权类型,如受权码 (Authorization Code Grant)、隐式受权 (Implicit Grant)、RO凭证受权 (Resource Owner Password Credentials Grant)、Client凭证受权 (Client Credentials Grant)。因为本文旨在帮助用户理解OAuth协议,因此我将先介绍这些受权类型的基本思路,而后选择其中最核心、最难理解、也是最普遍使用的一种授 权类型——“受权码”,进行深刻的介绍。
2.3 OAuth协议 - 基本思路
http://www.open-open.com/lib/view/open1392863557428.html