1. 程式人生 > >第三方登入oauth原理

第三方登入oauth原理

 一、OAUTH是什麼?  OAUTH協議為使用者資源的授權提供了一個安全的、開放而又簡易的標準。與以往的授權方式不同之處是OAUTH的授權不會使第三方觸及到使用者的帳號資訊(如使用者名稱與密碼),即第三方無需使用使用者的使用者名稱與密碼就可以申請獲得該使用者資源的授權,因此OAUTH是安全的。同時,任何第三方都可以使用OAUTH認證服務,何服務提供商都可以實現自身的OAUTH認證服務,因而OAUTH是開放的。

二、OAUTH相關術語

  • OAUTH相關的三個URL:
    • Request Token URL: 獲取未授權的Request Token服務地址;
    • User Authorization URL: 獲取使用者授權的Request Token服務地址;
    • Access Token URL: 用授權的Request Token換取Access Token的服務地址;
  • OAUTH相關的引數定義:
    • oauth_consumer_key: 使用者的ID,OAUTH服務的直接使用者是開發者開發出來的應用。所以該引數值的獲取一般是要去OAUTH服務提供商處註冊一個應用,再獲取該應用的oauth_consumer_key。如Yahoo該值的註冊地址為:https://developer.yahoo.com/dashboard/
    • oauth_consumer_secret:oauth_consumer_key對應的金鑰。
    • oauth_signature_method: 請求串的簽名方法,應用每次向OAUTH三個服務地址傳送請求時,必須對請求進行簽名。簽名的方法有:HMAC-SHA1、RSA-SHA1與PLAINTEXT等三種。
    • oauth_signature: 用上面的簽名方法對請求的簽名。
    • oauth_timestamp: 發起請求的時間戳,其值是距1970 00:00:00 GMT的秒數,必須是大於0的整數。本次請求的時間戳必須大於或者等於上次的時間戳。
    • oauth_nonce: 隨機生成的字串,用於防止請求的重放,防止外界的非法攻擊。
    • oauth_version: OAUTH的版本號,可選,其值必須為1.0。

         OAUTH HTTP響應程式碼:     

  • HTTP 400 Bad Request 請求錯誤
    • Unsupported parameter 引數錯誤
    • Unsupported signature method 簽名方法錯誤
    • Missing required parameter 引數丟失
    • Duplicated OAuth Protocol Parameter 引數重複
  • HTTP 401 Unauthorized 未授權
    • Invalid Consumer Key 非法key
    • Invalid / expired Token 失效或者非法的token
    • Invalid signature 簽名非法
    • Invalid / used nonce 非法的nonce

三、OAUTH認證授權流程

           在弄清楚了OAUTH的術語後,我們可以對OAUTH認證授權的流程進行初步認識。其實,簡單的來說,OAUTH認證授權就三個步驟,三句話可以概括:

            1. 獲取未授權的Request Token(在應用服務商註冊的App Key和App Secret)

            2. 獲取使用者授權的Request Token(使用者允許授權後服務商會返回的臨時的RequestToken

            3. 用授權的Request Token換取Access Token(用臨時的Request Token去換取Acces Token

            當應用拿到Access Token後,就可以有權訪問使用者授權的資源了。大家肯能看出來了,這三個步驟不就是對應OAUTH的三個UR          L服務地址嘛。一點沒錯,上面的三個步驟中,每個步驟分別請求一個URL,並且收到相關資訊,並且拿到上步的相關資訊去請            求接下來的URL直到拿到Access Token。具體的步驟如下圖所示:

       具體每步執行資訊如下:

A. (第三方軟體)向OAUTH服務提供商請求未授權的Request Token。向Request Token URL發起請求,請求需要帶上引數(自我理解為param 註冊資訊

B.OAUTH服務提供商同意第三方軟體的請求,並向其頒發未經使用者授權的oauth_token與對應的oauth_token_secret,並返回給第三方軟體)。(App Key和App Secret

C.第三方軟體OAUTH服務提供商請求使用者授權的Request Token。向User Authorization URL發起請求。

    請求引數是上步拿到的未授權的token與其金鑰.App Key和App Secret

D. OAUTH服務提供商將引導使用者授權。該過程可能會提示使用者,你想將哪些受保護的資源授權給該應用。

    此步可能會返回授權的Request Token也可能不返回。如Yahoo OAUTH就不會返回任何資訊給使用者。

E. Request Token 授權後,使用者向Access Token URL發起請求,將上步授權的Request Token換取成Access Token。

請求的引數(Request Token、App Key、App Secret),這個比第一步A多了一個引數就是Request Token。

F.OAUTH服務提供商同意第三方軟體的請求,並向其頒發Access Token與對應的金鑰,並返回給第三方軟體

G.第三方軟體就可以使用上步返回的Access Token訪問使用者授權的資源。

   從上面的步驟可以看出,使用者始終沒有將其使用者名稱與密碼等資訊提供給使用者(第三方軟體),從而更安全。用OAUTH實現背景一節中的典型案例:當服務B(列印服務)要訪問使用者的服務A(圖片服務)時,通過OAUTH機制,服務B向服務A請求未經使用者授權的Request Token後,服務A將引導使用者在服務A的網站上登入,並詢問使用者是否將圖片服務授權給服務B。使用者同意後,服務B就可以訪問使用者在服務A上的圖片服務。整個過程服務B沒有觸及到使用者在服務A的帳號資訊。如下圖所示,圖中的字母對應OAUTH流程中的字母:

相關推薦

第三方登入oauth原理

 一、OAUTH是什麼?  OAUTH協議為使用者資源的授權提供了一個安全的、開放而又簡易的標準。與以往的授權方式不同之處是OAUTH的授權不會使第三方觸及到使用者的帳號資訊(如使用者名稱與密碼)

第三方登入原理

轉載自:https://blog.csdn.net/lihe460186709/article/details/52886116 摘要:OAUTH協議為使用者資源的授權提供了一個安全的、開放而又簡易的標準。與以往的授權方式不同之處是OAUTH的授權不會使第三方觸及到使用者的帳號資訊(如使用者名稱與密碼)

第三方登入 Oauth協議 及應用場景

第三方登陸      第三方登入是基於使用者在第三方平臺上已有的賬號和密碼來快速完成己方應用的登入或者註冊的功能。而這裡的第三方平臺,一般是已經擁有大量使用者的平臺,國外的比如Facebook,Twitter等,國內的比如微博、微信、QQ等。&n

PHP實現第三方登入原理和實現過程

最近快過年放假了,有但時間就整理一下~~第三方登入,就是使用大家比較熟悉的比如QQ、微信、微博等第三方軟體登入自己的網站,這可以免去註冊賬號、快速留住使用者的目的,免去了相對複雜的註冊流程。下邊就給大家講一下怎麼使用PHP開發QQ登入的功能。1、進入QQ互聯官網進行登入(可以

OAuth認證原理第三方登入

1.背景 以下例子引用知乎“OAuth 授權的工作原理是怎樣的?足夠安全嗎?”中李天放的回答 假如你在某個網站A上使用微博進行第三方登入,那麼你可以想象新浪微博就是你的家。偶爾你會想讓一些人(第三方應

第三方登入 理解OAuth 2.0

作者: 阮一峰 OAuth是一個關於授權(authorization)的開放網路標準,在全世界得到廣泛應用,目前的版本是2.0版。 本文對OAuth 2.0的設計思路和執行流程,做一個簡明通俗的解釋,主要參考材料為RFC 6749。 一、應用場景 為了理解OA

微信網頁第三方登入原理

標籤: 微信開放平臺和公眾平臺的區別 1.公眾平臺面向的時普通的使用者,比如自媒體和媒體,企業官方微信公眾賬號運營人員使用,當然你所在的團隊或者公司有實力去開發一些內容,也可以呼叫公眾平臺裡面的介面,比如自定義選單,自動回覆,查詢功能。目前大多數微信通過認證之後,都在做這個事情。 mp.weixin.qq

用 Flask 來寫個輕部落格 (23) — 應用 OAuth 來實現 Facebook 第三方登入

目錄 前文列表 擴充套件閱讀 第三方登入流程 Resource Owner:資源所有者,本文中又稱”使用者”(user)。 Authorization server:認證伺服器,即服務提供商專門用來處理認證的伺服器。

單點登入第三方登入的實現原理

單點登入:       我們的單點登入系統,主要包含了登入驗證,token校驗 、登出、註冊幾大功能,單點登入系統提供了統一的登入和註冊頁面,提供了統一的登入token校驗介面。單點登入的主要原理就是在登入成功以後,生成一個令牌,這個領跑要求每次登入唯一不可重複,我們就簡單的

QQ第三方登入(預備節)

第一次很多時候,使用者因為複雜的註冊程式,而不願意再體驗我們的網站服務,我們可以通過QQ第三方授權,這樣既保證了使用者數,而且也極大的提高了使用者體驗。廢話就不多說了,直接進入正題。。。   要實現QQ第三方登陸 這就需要QQ方面的支援。 首先  我們需要在QQ開發者網站上註冊,ht

QQ第三方登入(完結篇)

書接上回,上回說到:這篇是程式碼篇 首先我們先來看一下我的母鹿(目錄)吧     Connect2.1  是我們從下載的SDK,內容包含     其他檔案在配置之後全部刪除了!    index.html 是我們點選登陸的頁面

iOS友盟做第三方登入和分享注意事項

本人使用友盟SDK的真實經歷,全,比官方文件詳細 1.下載友盟SDK及開發文件 2. 去開放中心註冊微信/QQ/微博的AppKey,注意,必須新增測試的QQ號,才能在測試,否則QQ返回登入授權失敗 3. http傳輸安全設定 A、在info.plist中加入安全域名白名單

友盟整合QQ第三方登入獲取顯示頭像

匯入jar 2.複製官方佈局裡面的程式碼====================== 3.匯入依賴 compile 'com.umeng.sdk:common:latest.integration' compile 'com.gith

微信、QQ第三方登入授權時的問題總結

  一、微信第一個問題:redirect_uri域名與後臺配置不一致,錯誤碼:10003   解決方案:   1,首先確定訪問的第三方介面地址引數前後順序是否正確,redirect_uri回撥地址是否加了http://字首   2,確定第三方應用中的回撥地址是否正確設定,沒有的話則修改回撥地址域   

使用.net 操作 微信公眾平臺 —— 第三方登入 —— .net MVC

目錄   1. 使用.net 操作 微信公眾平臺 —— 接入   2. 使用.net 操作 微信公眾平臺 —— 生成微信選單   3. 使用.net 操作 微信公眾平臺 —— 接收並回複用戶訊息   4. 使用.n

使用.net 操作 微信公眾平臺 —— 第三方登入

目錄   1. 使用.net 操作 微信公眾平臺 —— 接入   2. 使用.net 操作 微信公眾平臺 —— 生成微信選單   3. 使用.net 操作 微信公眾平臺 —— 接收並回複用戶訊息   4. 使用.n

Java實現Google第三方登入

       其實所有的第三方登入都是基於OAuth協議的,大多數平臺都支援OAuth2.0,只有Twitter的是基於OAuth1.0來做的。所以只要弄明白一個,其他的什麼qq、微信、微博的第三方登入也都一樣。上一篇寫的Faceboo

Java實現Facebook第三方登入

第一次接觸Facebook第三方登入,可能有些地方做的並不全面,只是嘗試著做了一個小demo,因為國內接入Facebook的專案並不多,並且多數都是Android或IOS的實現,所以資料也特別少,在此做個小總結。 第三方登入主要就是OAuth2.0協議,瞭解OAuth2.0是必要的! 開

Android開發技巧之:QQ第三方登入(二)

接 android QQ第三方登入(一)  獲取登入使用者名稱資訊,這邊先抱怨一下,官方API有點坑 Constants原始碼類下就是找不到GRAPH_SIMPLE_USER_INFO這個屬性!無語! 根據官方提供返回的的JSONObject資訊解析:

Android開發技巧之:QQ第三方登入(一)

使用的是Android_SDK_V2.9.1,建議使用最新版; 官方下載:SDK下載  Android studio 中新增到 然後在點選build.gradle檔案新增 配置AndroidManifest 在應用的Andr