天天看點

OAuth 2.0實戰(一)-通俗光速入門(下)3 為什麼用 OAuth 2.0?4 OAuth 2.0 的執行流程5 總結

3 為什麼用 OAuth 2.0?

了解完上面兩種場景,可以想象關于授權,最容易的方案就是提供令牌。你要去華為南研所面試,那接待大廳小姐姐就給你張通行證;xx要擷取你的訂單資訊,你就把你的使用者名密碼給它。但稍微有些安全意識,我們都不會這樣做。

因為你有了臨時通行證,那以後都能自由出入園區了。是以,華為有一套完善的機制,通過給你一張臨時的通行證,達到在保證安全情況下,還能讓你進入園區。這就是 OAuth 2.0。它通過給xx軟體一個通路令牌,而不是讓xx拿着你的使用者名密碼擷取訂單。

OAuth 2.0 授權協定,就是保證三方軟體隻有在獲得授權後,才可進一步通路授權者的資料。是以也常被稱為一種安全協定。

4 OAuth 2.0 的執行流程

我:“你好,xx。我正在 Google 浏覽器上面,需要通路你來幫我處理我在公衆号的文章。”

xx軟體:“好的,我需要你給我授權。現在我把你引導到公衆号開放平台,你在那裡給我授權。”

開放平台:“你好。我收到了xx軟體跳轉過來的請求,現在已經準備好了一個授權頁面。你登入并确認後,點選授權頁面上面的授權按鈕即可。”

我:“好的,開放平台。我看到了這個授權頁面,已經掃碼授權”

開放平台:“你好,xx打單軟體。我收到号主的授權,現在要給你生成一個授權碼,通過浏覽器重定向到你的回調 URL 位址上面了。”

xx軟體:“好的,開放平台。我現在從浏覽器上拿到了授權碼,現在就用這個授權碼來請求你,請給我一個通路令牌 access_token 吧。”

開放平台:“好的,xx,通路令牌已經發送給你了。”

xx軟體:“我現在就能使用通路令牌來擷取他的公衆号的全部文章了。”

我:“我已經能夠看到我的文章了,現在就開始一鍵排版了。”

可見,xx的最終目的志在擷取一個“通路令牌”。之後就有足夠的 “權限”去請求我的公衆号的所有文章了,也就能幫我排版了。

xx是拿授權碼換取的通路令牌。那xx又是如何拿到授權碼的?在我授權後才産生授權碼,後續流程,都是在我對xx軟體授權發生以後才産生的。是以究其本質流程:

生成授權碼 => 生成通路令牌 => 使用通路令牌

是以 OAuth 2.0 授權核心就是頒發通路令牌、使用通路令牌。

5 總結

OAuth 2.0 的核心是授權許可,即令牌機制。網際網路中受保護資源,幾乎都以 Web API 的形式提供通路,比如xx軟體要擷取我的文章資料,三方軟體通過 OAuth 2.0 取得通路權限後,我也便把這些權限委托給了xx這種三方軟體,是以 OAuth 2.0 是一種委托協定。

也正因為這種三方軟體,每次都是用通路令牌而非使用者名密碼來請求使用者資料,也大大減少資料安全風險。

參考

  • 《OAuth 2 in Action》
  • OAuth 2 協定規範
  • OAuth 2.0是要通過什麼方式解決什麼問題

繼續閱讀