第三方用戶在規定時間內,訪問某人在某服務器上共享的資源。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