OAuth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。
OAuth
允許用戶提供一個令牌,而不是用戶名和密碼來訪問他們存放在特定服務提供者的數據。每一個令牌授權一個特定的網站(例如,視頻編輯網站)在特定的時段(例如,接下來的2小時內)內訪問特定的資源(例如僅僅是某一相冊中的視頻)。
這樣,OAuth允許用戶授權第三方網站訪問他們存儲在另外的服務提供者上的信息,而不需要分享他們的訪問許可或他們數據的所有內容。
OAuth是OpenID的一個補充,但是完全不同的服務。
OAuth2.0
是OAuth協議的下一版本,但不向後兼容OAuth1.0。 OAuth 2.0關注客戶端開發者的簡易性,同時爲Web應用,桌面應用和手機,和起居室設備提供專門的認證流程。2012年10月,OAuth 2.0協議正式發佈爲RFC 6749[1] 。
Facebook的新的Graph API只支持OAuth 2.0,Google在2011年3月亦宣佈Google API對OAuth 2.0的支持。
認證和授權過程
在認證和授權的過程中涉及的三方包括:
1、服務提供方,用戶使用服務提供方來存儲受保護的資源,如照片,視頻,聯繫人列表。
2、用戶,存放在服務提供方的受保護的資源的擁有者。
3、客戶端,要訪問服務提供方資源的第三方應用,通常是網站。在認證過程之前,客戶端要向服務提供者申請客戶端標識。
使用OAuth進行認證和授權的過程如下所示:
1、用戶訪問客戶端的網站,想操作用戶存放在服務提供方的資源(輸入用戶名,密碼)。
2、客戶端向服務提供方請求一個臨時令牌(AccessToken)。
服務提供方驗證客戶端的身份後,授予一個臨時令牌。
3、客戶端獲得臨時令牌後,將用戶引導至服務提供方的授權頁面請求用戶授權。在這個過程中將臨時令牌和客戶端的回調連接發送給服務提供方(索取授權列表)。
用戶在服務提供方的網頁上輸入用戶名和密碼,然後授權該客戶端訪問所請求的資源。
4、授權成功後,服務提供方引導用戶返回客戶端的網頁。
5、客戶端根據臨時令牌從服務提供方那裏獲取訪問令牌。
6、服務提供方根據臨時令牌和用戶的授權情況授予客戶端訪問令牌。
7、客戶端使用獲取的訪問令牌訪問存放在服務提供方上的受保護的資源。