天天看點

OAuth 2.0實戰(一)-通俗光速入門(上)1 什麼是開放平台(Open Platform)2 OAuth 2.0 是什麼?

1 什麼是開放平台(Open Platform)

在軟體行業和網絡中,開放平台指軟體系統通過公開其API使外部程式可增加該軟體系統的功能或使用該軟體系統的資源,而無需更改該軟體系統的源碼。

在網際網路時代,把網站的服務封裝成一系列計算機易識别的資料接口開放出去,供第三方開發者使用,這種行為就叫做Open API,提供開放API的平台本身就被稱為開放平台。

很多應用都提供微信登入方式,減少了使用者注冊的繁瑣。- 第一次使用牛客網時,相信很多人是直接使用三方帳号(比如QQ、微信、微網誌)登入

OAuth 2.0實戰(一)-通俗光速入門(上)1 什麼是開放平台(Open Platform)2 OAuth 2.0 是什麼?

牛客網平台會直接使用你三方資訊作為基礎資訊,對使用者來說友善很多。那這到底是怎麼實作的呢?三方把你的個人資訊給了牛客網平台,它又怎麼保證你的資料安全的呢?

其背後原理就是 OAuth 2.0。

2 OAuth 2.0 是什麼?

“Auth”表示 “授權”, “O” 是 Open 簡稱,表示 “開放” ,表示 “開放授權”。

2007 年 OAuth 1.0 誕生,妄想一套授權機制打通全場景,e.g. Web、移動應用場景等,但這些場景并非完全相同,且還有安全上的固化攻擊等問題,直接宣判死刑。于是2011 年的 OAuth 2.0 擴充授權許可機制類型,更加靈活适應各種場景。

Spring Security Oauth2 是什麼?

Oauth2,是一種協定,安全授權協定,而 Spring Security Oauth2 是一種架構,它是根據 Oauth2 協定開發。

Spring Security 也是一種架構,一種提供聲明式的安全通路控制解決方案的安全架構,跟OAuth沒有直接關系。

使用者管理、認證中心、網關之間的聯系:

三個不同僚物,網關是單獨一個方向的内容,一般開放平台或者微服務架構下鑒權的工作都是在網關内完成,也就是認證(授權)完成【授權】,在網關完成【鑒權】,使用者管理是獨立于認證中心的存在,沒有認證中心,使用者管理一樣要有。

靜默登入實際上是通過【靜默授權】這種方式實作的,但是這個有個前提或者限制性的條件,不需要擷取使用者的更詳細的資訊比如頭像、性别等資訊,隻能擷取到使用者的唯一辨別比如openid和union id資訊,是以,需要考慮是否能滿足生産環境需求。

OAuth 2.0 是一種授權協定。那如何了解這裡的“授權”呢?

2.1 授權案例知多少?

2.1.1 華為面試場景

比如我當年準備去華為南研所參加面試,要是直接走大門,門衛會一把把我攔住,質問有無工牌。當然了我沒有,于是就被要求去接待大廳做登記。然後到了前台,我說是來面試的,并出示了身份證和短信通知。小姐姐确認後給了我一張通行卡證,然後就能自由出入華為南研所啦。

本來我是無權限進入華為南研所的,但是經過前台小姐姐驗證後,她發現我确實是被預約來面試的,于是給了張通行卡證。這個過程就是授權。

2.1.2 文章排版場景

比如我的公衆号JavaEdge,日常營運手動一個個排版,繁瑣勸退我的更新頻率!後來發現個“xx”第三方軟體,可高效排版文章内容。可xx又是如何能通路到我的文章資料的?因為公衆号提供了開放平台,xx通過開放平台的 API 就能通路到文章資料。

OAuth 2.0實戰(一)-通俗光速入門(上)1 什麼是開放平台(Open Platform)2 OAuth 2.0 是什麼?

隻因我在xx軟體裡掃碼同意了,xx就拿到了個通路令牌,通過它可擷取到我所有文章資料并幫我排版了。

這也是授權。我要是不掃碼同意,公衆号也不會把這些資料給到三方軟體。

其實該場景使用的就是授權碼許可(Authorization Code)類型。它是 OAuth 2.0 中最經典、最完備、最安全、應用最廣泛的許可類型。