白話OAuth2使用者認證及鑑權標準流程

2021-10-02 01:16:54 字數 1417 閱讀 6331

時光**網 wap.youxs.org

在說明oauth2需求及使用場景之前,需要先介紹一下oauth2授權流程中的各種角色:

如果您對這些角色承擔的作用還不清晰,也請先記住這些角色,繼續往下看:

從資源提供者的角度:我想讓其他廠商的應用都使用我提供的資源,以增強使用者對我的的粘性。越多的第三方應用依賴於我開放的介面,就表示會有越多的使用者依賴於我。參考:某某平台開放掃碼登入介面。

從第三方客戶端,即資源申請者的角度:a應用是乙個大廠開發的,它那裡使用者量大。a應用既然提供了基於oauth2的介面,我可以獲取一些基本使用者資料資訊,我幹嘛不用呢。特別是掃碼登入功能介面,給我自己的使用者也帶來了極大的方便,增強了我的應用的使用者體驗。

oauth2授權的流程的授權流程還是有點複雜的,用專業的術語很容易把大家弄糊塗,所以我希望給大家舉乙個生活中的例子,來幫助理解。

背景:我經營著乙個考研自習室,向考研學生出租提供自習室資源。李小明是一位考研學生,自習室資源擁有者,我的使用者。

下面我們來結合這張圖理解oauth2授權的流程:

第五步(頒發token令牌):於是我找出自習室的鑰匙交給了小明的家長。

從上面的例子中我們看到,小明(使用者)是明顯受益方,他不用跑腿了。我作為自習室經營者(認證伺服器),對外提供這種服務的目的是為了增加使用者粘性,增強使用者體驗。小明的家長作為第三方,他獲取了資源(自習室書包),是為了增強自己的兒子小明的使用者體驗。

以上的授權模式,就是oauth2最典型的最常被使用的授權碼模式。「***x」位址是授權碼,鑰匙是access token。用相對專業的說法再說明一次,大家可以對比學習:

第三方應用,向認證伺服器請求授權。

使用者告知認證伺服器同意授權(通常是通過使用者掃碼或輸入使用者名稱密碼的方式)

認證伺服器向第三方應用告知授權碼(code)

第三方應用使用授權碼(code)申請access token

認證伺服器驗證授權碼,頒發access token

這樣第三方應用就可以使用access token,訪問服務提供商的介面資源了。(小明家長用鑰匙去自習室取書包)

密碼模式與授權碼模式最大的區別在於:授權碼模式申請授權碼的過程是使用者直接與認證伺服器進行互動,然後授權結果由認證伺服器告知第三方客戶端,也就是不會向第三方客戶端暴露服務提供商的使用者密碼資訊。而密碼模式,是使用者將使用者密碼資訊交給第三方,然後由第三方向服務提供商進行認證和資源請求。絕大多數的服務提供商都會選擇使用授權碼模式,避免自己的使用者密碼暴漏給第三方。所以密碼模式只適用於服務提供商對第三方廠商高度信任的情況下才能使用。

其他兩種模式的應用很少,所以不做過多的介紹。想深入了解的,自行學習!

白話OAuth2使用者認證及鑑權標準流程

在說明oauth2需求及使用場景之前,需要先介紹一下oauth2授權流程中的各種角色 如果您對這些角色承擔的作用還不清晰,也請先記住這些角色,繼續往下看 從資源提供者的角度 我想讓其他廠商的應用都使用我提供的資源,以增強使用者對我的的粘性。越多的第三方應用依賴於我開放的介面,就表示會有越多的使用者依...

springcloud整合Oauth2許可權專案

最近專案提交測試階段,有那麼點點空閒時間,於是打算還是搞搞自己的東西,現在分布式很火,如果不會點分布式或者不知道分布式,那就有點說不過去了,現在動不動都會問到關於分布式的話題,不會的話就有點掉分了。準備搭建乙個簡易許可權系統,技術棧 springcloud那一套 eureka zuul oauth2...

OAuth2認證方式介紹

在任何 oauth 流程中都有三個參與者 客戶端 登入的人員或使用者 使用者 客戶端想要登入的應用程式 在上圖中是 gitlab 服務提供者 使用者通過其進行身份驗證的外部應用程式。上圖中為 github 使用oauth進行認證和授權的過程如下所示 a 使用者開啟客戶端以後,客戶端要求使用者給予授權...