OAuth 2.0簡介
爲了簡化網站和應用的註冊登錄開發,第三方登錄橫空出世,比如QQ登錄,微信登錄,微博登錄等等;
第三方登錄也叫做第三方授權,相應的規範是OAuth 2.0;每家提供第三方登錄的大型互聯網公司都有具體實現,原理一致,大體過程一致,細節有差別;
先了解下OAuth 2.0原理;
OAuth2.0是OAuth協議的延續版本,但不向後兼容OAuth 1.0即完全廢止了OAuth1.0。 OAuth 2.0關注客戶端開發者的簡易性。要麼通過組織在資源擁有者和HTTP服務商之間的被批准的交互動作代表用戶,要麼允許第三方應用代表用戶獲得訪問的權限。同時爲Web應用,桌面應用和手機,和起居室設備提供專門的認證流程。2012年10月,OAuth 2.0協議正式發佈爲RFC 6749 [1] 。
在認證和授權的過程中涉及的三方包括:
1、服務提供方,用戶使用服務提供方來存儲受保護的資源,如照片,視頻,聯繫人列表。
2、用戶,存放在服務提供方的受保護的資源的擁有者。
3、客戶端,要訪問服務提供方資源的第三方應用,通常是網站,如提供照片打印服務的網站。在認證過程之前,客戶端要向服務提供者申請客戶端標識。
使用OAuth進行認證和授權的過程如下所示:
用戶想操作存放在服務提供方的資源。
用戶登錄客戶端向服務提供方請求一個臨時令牌。
服務提供方驗證客戶端的身份後,授予一個臨時令牌。
客戶端獲得臨時令牌後,將用戶引導至服務提供方的授權頁面請求用戶授權。在這個過程中將臨時令牌和客戶端的回調連接發送給服務提供方。
用戶在服務提供方的網頁上輸入用戶名和密碼,然後授權該客戶端訪問所請求的資源。
授權成功後,服務提供方引導用戶返回客戶端的網頁。
客戶端根據臨時令牌從服務提供方那裏獲取訪問令牌。
服務提供方根據臨時令牌和用戶的授權情況授予客戶端訪問令牌。
客戶端使用獲取的訪問令牌訪問存放在服務提供方上的受保護的資源。
QQ第三方登錄實現大體過程:
Step1:接入申請,獲取appid和apikey;
Step2:放置QQ登錄按鈕;
Step3:通過用戶登錄驗證和授權,獲取Access Token;
Step4:通過Access Token獲取用戶的OpenID;
Step5:調用OpenAPI,來請求訪問或修改用戶授權的資源。