日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OAuth认证协议原理分析及使用方法

發布時間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OAuth认证协议原理分析及使用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

twitter或豆瓣用戶一定會發現,有時候,在別的網站,點登錄后轉到 twitter登錄,之后轉回原網站,你會發現你已經登錄此網站了,?這種網站就是這個效果。其實這都是拜 OAuth所賜。


OAuth是什么?


OAuth是一個開放的認證協議,讓你可以在Web或桌面程序中使用簡單而標準的,安全的API認證。


OAuth有什么用?為什么要使用OAuth?


網絡開放是一個不變的趨勢,那么不可避免的會有各種網絡服務間分享內容的需要。

舉個我們身邊國內的例子吧:比如人人網想要調用QQ郵箱的聯系人列表,現在的方法是你需要在人人網輸入你的QQ號,QQ密碼才能調用,雖然網站上可能都自謂“不保留QQ用戶名密碼”,但是大家信嗎?

OAuth就是為了解決這個問題而誕生的,用戶訪問第三方資源,不再需要網站提交你的用戶名,密碼。這樣好處自己是安全,而且不會泄露你的隱私給不信任的一方。


OAuth原理


OAuth中有三方:一,用戶;二,Consumer(中間商,類似上面的 twitterfeed 角色);三,服務提供商(如上例的twitter角色)。


一,Consumer 向 服務提供商 申請接入權限


可得到:Consumer Key,Consumer Secret。twitter申請oauth的話,在 setting - connection - developer 里面申請。 同時給出三個訪問網址:


  1. request_token_url = 'http://twitter.com/oauth/request_token'
  2. access_token_url = 'http://twitter.com/oauth/access_token'
  3. authorize_url = 'http://twitter.com/oauth/authorize'

二,當Consumer接到用戶請求想要訪問第三方資源(如twitter)的時候


Consumer需要先取得 請求另牌(Request Token)。網址為上面的 request_token_url,參數為:


  1. oauth_consumer_key:Consumer Key
  2. oauth_signature_method:簽名加密方法
  3. oauth_signature:加密的簽名 (這個下面細說)
  4. oauth_timestamp:UNIX時間戳
  5. oauth_nonce:一個隨機的混淆字符串,隨機生成一個。
  6. oauth_version:OAuth版本,可選,如果設置的話,一定設置為 1.0
  7. oauth_callback:返回網址鏈接。
  8. 及其它服務提供商定義的參數

這樣 Consumer就取得了 請求另牌(包括另牌名 oauth_token,另牌密鑰 oauth_token_secret。


三,瀏覽器自動轉向服務提供商的網站:


網址為?authorize_url?oauth_token=請求另牌名


四,用戶同意 Consumer訪問 服務提供商資源


那么會自動轉回上面的 oauth_callback 里定義的網址。同時加上 oauth_token (就是請求另牌),及?oauth_verifier(驗證碼)。


五,現在總可以開始請求資源了吧?


NO。現在還需要再向 服務提供商 請求 訪問另牌(Access Token)。網址為上面的?access_token_url,參數為:

  1. oauth_consumer_key:Consumer Key
  2. oauth_token:上面取得的 請求另牌的名
  3. oauth_signature_method:簽名加密方法
  4. oauth_signature:加密的簽名 (這個下面細說)
  5. oauth_timestamp:UNIX時間戳
  6. oauth_nonce:一個隨機的混淆字符串,隨機生成一個。
  7. oauth_version:OAuth版本,可選,如果設置的話,一定設置為 1.0
  8. oauth_verifier:上面返回的驗證碼。
  9. 請求 訪問另牌的時候,不能加其它參數。

這樣就可以取得 訪問另牌(包括Access Token 及 Access Token Secret)。這個就是需要保存在 Consumer上面的信息(沒有你的真實用戶名,密碼,安全吧!)


六,取得 訪問另牌 后,


Consumer就可以作為用戶的身份訪問 服務提供商上被保護的資源了。提交的參數如下:

  1. oauth_consumer_key:Consumer Key
  2. oauth_token:訪問另牌
  3. oauth_signature_method:簽名加密方法
  4. oauth_signature:加密的簽名 (這個下面細說)
  5. oauth_timestamp:UNIX時間戳
  6. oauth_nonce:一個隨機的混淆字符串,隨機生成一個。
  7. oauth_version:OAuth版本,可選,如果設置的話,一定設置為 1.0
  8. 及其它服務提供商定義的參數


OAuth安全機制是如何實現的?


OAuth 使用的簽名加密方法有 HMAC-SHA1,RSA-SHA1 (可以自定義)。拿 HMAC-SHA1 來說吧,HMAC-SHA1這種加密碼方法,可以使用 私鑰 來加密 要在網絡上傳輸的數據,而這個私鑰只有 Consumer及服務提供商知道,試圖攻擊的人即使得到傳輸在網絡上的字符串,沒有 私鑰 也是白搭。

私鑰是:consumer secret&token secret ?(哈兩個密碼加一起)

要加密的字符串是:除?oauth_signature 外的其它要傳輸的數據。按參數名字符排列,如果一樣,則按 內容排。如:domain=kejibo.com&oauth_consumer_key=XYZ&word=welcome......................

前面提的加密里面都是固定的字符串,那么攻擊者豈不是直接可以偷取使用嗎?

不,oauth_timestamp,oauth_nonce。這兩個是變化的。而且服務器會驗證一個 nonce(混淆碼)是否已經被使用。

那么這樣攻擊者就無法自已生成 簽名,或者偷你的簽名來使用了。

總結

以上是生活随笔為你收集整理的OAuth认证协议原理分析及使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。