OAuth官網介紹是這樣的:web
An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.安全
翻譯過來就是:服務器
容許Web,移動端和桌面應用程序在一個簡單、標準的方法中進行安全受權的開放協議微信
OAuth(開放受權)是一個開放標準,容許用戶讓第三方應用訪問該用戶在某一網站(應用)上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。 咱們如今常說的OAuth協議通常指的是OAuth2.0,目前大多數互聯網公司開放API接口都基本上都支持OAuth2.0。app
舉個例子,咱們常見的微信受權登陸,當咱們下載了一款App(假設是Keep,我正在用的一個健身App),但咱們懶得去註冊新的帳號,而咱們又要使用該App的功能,若是該App提供了支持微信登陸的「懶人」功能,那麼你能夠直接點擊微信受權登陸。那這麼作有什麼利弊呢? 第一:很顯然,對客戶來講,省去了註冊的時間,更加方便,並且在微信已受權列表中,能夠隨意取消對該App的受權。 第二:對App來講,能夠依賴社交帳號,迅速發展用戶,且能夠採集該用戶的一些信息(我的認爲,某音這方面採集分析的有點過度了)ide
先了解下OAuth中出現的幾個名詞:學習
Provider
:服務提供商。Resource Owner
:資源全部者。Third-Party Client
:第三方應用。上述例子中,keep就是第三方應用
,而微信就是服務提供商
,客戶就是資源全部者
用一個簡單的流程圖來描述下OAuth的登陸流程:網站
OAuth協議中的受權模式包括:受權碼模式(authorization code), 簡化模式(implicit),密碼模式(resoure owner password credentials),客戶端模式(client credentials)。 簡化模式和客戶端模式用的相對來講比較少,如今比較流行的都是使用受權碼模式,也是咱們學習的重點。翻譯
使用受權碼模式時,第三方應用會將用戶導向認證服務器,用戶贊成受權的動做會在認證服務器上完成。受權完畢以後,認證服務器會將用戶從新導向至第三方應用,而且攜帶受權碼,第三方應用收到受權碼以後,再使用受權碼向認證服務器申請令牌,若是認證服務器確認該受權碼無誤後,則會向第三方應用分配一個令牌。第三方應用再使用該令牌訪問用戶在資源服務器中的資源。流程圖以下: code
該篇文章主要是介紹一些有關OAuth協議的基本知識和認證原理,其中重點要了解的是OAuth中的受權碼模式,目前大多數主流應用安全認證都是使用該模式。由於該模式相對於其餘模式來講,流程是最完善、最安全的。如您看到該文後,有更好的資料能夠在文章下方評論分享。感謝您的觀看!