乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      OAuth 2.0 原理、流程、使用及解釋

       小世界的野孩子 2021-11-18

      最近應(yīng)客戶的要求,我們公司對(duì)客戶的原有系統(tǒng),進(jìn)行了升級(jí),增加了 OAuth 2.0 的功能。

      開發(fā)過程中,搜索了網(wǎng)上的資料,發(fā)現(xiàn)都解釋不清??赡苁窍嚓P(guān)作者,只熟悉前端、后端之一,說不清楚完整流程。我們邊理解、邊猜測(cè)、邊開發(fā)調(diào)試,終于完成了此系統(tǒng)的改造。

      之后,公司對(duì)本公司的軟件產(chǎn)品:折桂打印平臺(tái)系統(tǒng)/折桂上傳平臺(tái)系統(tǒng)、折桂單點(diǎn)登錄系統(tǒng),均增加了 OAuth 2.0 功能,也有機(jī)會(huì),同時(shí)開發(fā) OAuth 2.0 使用方的軟件、 OAuth 2.0 服務(wù)提供方的軟件,完成之后,決定寫一遍這方面的流程文章,作為總結(jié)。

      網(wǎng)上的 OAuth 2.0 介紹,也有一些交互流程圖,但都比較簡(jiǎn)單、概要,難以理解。

      這里整理一份詳細(xì)的 OAuth 2.0 authorization_code 模式的交互流程圖,如下:

      相關(guān)解釋如下:

      綠色寬箭頭,為用戶在 IE 瀏覽器的主動(dòng)操作;

      藍(lán)色寬箭頭,為IE瀏覽器的自動(dòng)跳轉(zhuǎn),用戶能看到,但不是用戶的主動(dòng)操作;

      紫色寬箭頭,兩個(gè)服務(wù)器之間的交互,用戶看不到;

      OAuth 詳細(xì)流程的步驟如下:

      1. 用戶使用瀏覽器,輸入網(wǎng)址,訪問 server_a 的某個(gè)網(wǎng)址。

      2.server_a 檢查用戶是否已登錄,如果沒有,則指示用戶瀏覽器,自動(dòng)跳轉(zhuǎn)到 OAuth 登錄服務(wù)器 server_oauth,網(wǎng)址參數(shù)中,帶 redirect_uri ,也就是說,登錄完成后,還得到我這里來。

      3. OAuth 登錄服務(wù)器 server_oauth, 檢查用戶是否已登錄。請(qǐng)注意,同一個(gè)用戶 IE ,在 server_a 、server_oauth 兩臺(tái)服務(wù)器處,登錄狀態(tài)可以不一樣。

      4. 如果用戶未在登錄服務(wù)器 server_oauth 處登錄,則 server_oauth 顯示登錄頁面(網(wǎng)頁)

      5. 用戶錄入用戶名、密碼。此處可能有別的登錄方式,比如,掃描登錄,員工卡登錄,等等。

      6. 用戶勾選“允許應(yīng)用 server_a 使用我的基本用戶信息(密碼除外)”。此步驟,按理是不能略過的。但有的 OAuth 登錄服務(wù)器 ,不顯示此選擇項(xiàng),或者只以文字提示、用戶不用去勾選。孰優(yōu)孰劣,一時(shí)也難以評(píng)說。

      7. 如果用戶登錄成功,則登錄服務(wù)器 server_oauth 標(biāo)記此用戶為已登錄狀態(tài),后臺(tái)可能記錄登錄時(shí)間、遠(yuǎn)程 IP 地址等信息。

      8. 登錄服務(wù)器 server_oauth 指示用戶瀏覽器,自動(dòng)跳轉(zhuǎn)到 server_a 服務(wù)器,此處網(wǎng)址為上述步驟 2 中的  redirect_uri 。

      9. 服務(wù)器 server_a ,在  redirect_uri 網(wǎng)址對(duì)應(yīng)的后臺(tái)程序中,處理用戶的 OAuth 登錄過程。

      9.1 服務(wù)器 server_a 獲取網(wǎng)址參數(shù)中的 code, 這是 OAuth 技術(shù)中的"授權(quán)碼"。這個(gè)授權(quán)碼,有效期比較短。當(dāng)然,不同的 OAuth 登錄服務(wù)器,配置不同,可能是幾秒鐘,可能是10分鐘。

      9.2  服務(wù)器 server_a 以"授權(quán)碼" 向 OAuth 登錄服務(wù)器 server_oauth 索取 token ,即 OAuth 技術(shù)中的"令牌"。這一步驟,用戶處 IE 瀏覽器看不到。令牌的有效期較長。同樣的,不同的 OAuth 登錄服務(wù)器,配置不同,可能是15分鐘,可能是幾天。這一步驟操作,一般是 HTTP GET 請(qǐng)求(request).

      9.2.1 OAuth 登錄服務(wù)器 server_oauth,以 json 字符串形式,返回 token 數(shù)據(jù),作為 9.2 步驟的結(jié)果。這一步驟,是 HTTP GET 的結(jié)果(response)。

      9.2.2 服務(wù)器 server_a 解析得到的 token json 字符串,獲取 token 數(shù)值。

      9.3 服務(wù)器 server_a 以"token 數(shù)值" 向 OAuth 登錄服務(wù)器 server_oauth 索取用戶資源,此處一般只有用戶基本信息,比如登錄賬號(hào)、用戶全名、電子郵件、電話等,不涉及密碼。這一步驟操作,一般是 HTTP GET 請(qǐng)求(request).

      9.3.1 OAuth 登錄服務(wù)器 server_oauth,以 json 字符串形式,返回用戶基本信息數(shù)據(jù),作為 9.5 步驟的結(jié)果。這一步驟,是 HTTP GET 的結(jié)果(response)。

      9.3.2 服務(wù)器 server_a 解析得到的 user info json 字符串,獲取用戶基本信息數(shù)據(jù)。

      9.4 服務(wù)器 server_a 保存用戶基本信息,并標(biāo)記為已登錄用戶

      9.4.1 一般來說,服務(wù)器 server_a 會(huì)檢查此用戶登錄賬號(hào)(qq 號(hào),或電子郵件,或域賬號(hào)...),是否為本地已存在的用戶。如果不是,則創(chuàng)建本地用戶。

      9.4.2 服務(wù)器 server_a 保存當(dāng)前遠(yuǎn)程 IE 用戶對(duì)應(yīng)的信息,一般是后端保存用戶登錄賬號(hào)到 HTTP session。此步驟即標(biāo)記當(dāng)前用戶為已登錄狀態(tài)、并記住當(dāng)前登錄用戶是誰。

      9.4.3 服務(wù)器 server_a 保存當(dāng)前遠(yuǎn)程 IE 用戶對(duì)應(yīng)的 OAuth token,一般也是保存到 HTTP session。

      10. 服務(wù)器 server_a 指示用戶瀏覽器,自動(dòng)跳轉(zhuǎn)到本服務(wù)器的另一個(gè)網(wǎng)址。此處不同的系統(tǒng),實(shí)現(xiàn)的功能不同。一般是跳轉(zhuǎn)到“本系統(tǒng)里已登錄用戶的默認(rèn)首頁”,也有的系統(tǒng),會(huì)跳轉(zhuǎn)到以上步驟 1 的網(wǎng)址。

      11. 服務(wù)器 server_a 后端檢查用戶在本系統(tǒng)的網(wǎng)頁操作權(quán)限,各系統(tǒng)自行實(shí)現(xiàn)功能,此處不詳細(xì)描述。

      以上,即 OAuth 2.0 的完整交互過程。

      -------歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處:https://www.cnblogs.com/jacklondon/ 

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多