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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

oauth2.0协议流程_正确的工作流程:我应该使用哪个OAuth 2.0流程?

發(fā)布時(shí)間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oauth2.0协议流程_正确的工作流程:我应该使用哪个OAuth 2.0流程? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

oauth2.0協(xié)議流程

什么是OAuth 2.0

OAuth 2.0是一個(gè)已被廣泛采用的委托授權(quán)框架,已經(jīng)存在了很多年,并且似乎已經(jīng)存在。 如果您不熟悉OAuth 2.0的基本概念,可以使用
川崎孝彥寫(xiě)的優(yōu)秀文章 。 這只是OAuth 2.0各方的簡(jiǎn)要提醒:

  • 資源所有者–受保護(hù)資源的所有者,例如用戶
  • 客戶端–想要訪問(wèn)受保護(hù)資源的應(yīng)用程序,例如服務(wù)器端Web應(yīng)用程序或單頁(yè)應(yīng)用程序(SPA)
  • 授權(quán)服務(wù)器–發(fā)行令牌的服務(wù)器
  • 資源服務(wù)器–管理資源所有者的受保護(hù)數(shù)據(jù)的服務(wù)器

讓我們?yōu)g覽每個(gè)OAuth 2.0流程并討論其用法。

客戶證書(shū)授予

這是最簡(jiǎn)單的流程。 它允許客戶端使用其客戶端ID和客戶端密鑰請(qǐng)求訪問(wèn)令牌。 兩者都安全地保存在客戶端并在授權(quán)服務(wù)器中注冊(cè)。

  • 第一步,客戶端將HTTP請(qǐng)求發(fā)送到授權(quán)服務(wù)器,包括其客戶端ID和客戶端密鑰(例如,在Authorization標(biāo)頭中)。 該請(qǐng)求也可以包括所請(qǐng)求的范圍。
  • 在響應(yīng)中,授權(quán)服務(wù)器發(fā)送訪問(wèn)令牌。
  • 客戶端使用訪問(wèn)令牌來(lái)調(diào)用資源服務(wù)器。
  • 什么時(shí)候使用?

    如您所見(jiàn),沒(méi)有用戶參與。 建議使用“客戶端憑據(jù)授予”來(lái)進(jìn)行計(jì)算機(jī)到計(jì)算機(jī)的授權(quán)。 通常,一個(gè)受信任的服務(wù)將調(diào)用另一個(gè)服務(wù)。

    授權(quán)碼授予

    最常用的流程,專門(mén)為可以維護(hù)其客戶端機(jī)密信息的服務(wù)器端應(yīng)用程序而設(shè)計(jì)。 這是基于重定向的流之一。

  • 客戶端通過(guò)將資源所有者的用戶代理重定向到授權(quán)服務(wù)器來(lái)啟動(dòng)流程。 客戶端包括其客戶端ID,請(qǐng)求的范圍和重定向URI。
  • 資源所有者通過(guò)授予客戶端請(qǐng)求的權(quán)限來(lái)授權(quán)客戶端。
  • 授權(quán)服務(wù)器將用戶代理重定向回客戶端(使用來(lái)自點(diǎn)1的重定向URI)。 重定向URI包含一個(gè)臨時(shí)授權(quán)碼(作為查詢參數(shù))。
  • 客戶端從授權(quán)服務(wù)器請(qǐng)求訪問(wèn)令牌。 該請(qǐng)求包括在上一步中收到的客戶端ID,客戶端密碼和授權(quán)代碼。
  • 如果所有內(nèi)容均有效,則授權(quán)服務(wù)器將返回訪問(wèn)令牌,并可選地返回刷新令牌。
  • 客戶端使用訪問(wèn)令牌代表資源所有者調(diào)用資源服務(wù)器。
  • 為什么我們需要其他授權(quán)碼?

    為什么我們不能直接請(qǐng)求訪問(wèn)令牌? 為什么首先要引入授權(quán)碼? 事實(shí)證明,主要目標(biāo)是分離公開(kāi)給客戶和用戶代理的信息。 請(qǐng)注意,訪問(wèn)令牌根本不會(huì)通過(guò)瀏覽器。 從客戶端(服務(wù)器端應(yīng)用程序)使用

    通過(guò)用戶代理轉(zhuǎn)發(fā)的授權(quán)碼。 瀏覽器有什么問(wèn)題? OAuth 2.0不需要客戶端服務(wù)器支持HTTPS。 因此,從技術(shù)上講,可能存在無(wú)法通過(guò)SSL重定向到客戶端服務(wù)器的問(wèn)題。 如果發(fā)生這種情況,則通過(guò)明文發(fā)送授權(quán)碼。 如果有人攔截了它,那么沒(méi)有Client Secret仍然沒(méi)有用。 但是,如果您直接通過(guò)HTTP發(fā)送訪問(wèn)令牌,則可能會(huì)遭到破壞。

    什么時(shí)候使用?

    如前所述,建議對(duì)服務(wù)器端Web應(yīng)用程序使用此流程。 但是,近年來(lái),這種流程的變體也已用于單頁(yè)和移動(dòng)應(yīng)用程序。

    單頁(yè)應(yīng)用

    對(duì)于單頁(yè)應(yīng)用程序,唯一的區(qū)別是客戶端(SPA)沒(méi)有客戶端密鑰。 由于SPA在瀏覽器中運(yùn)行,并且其源代碼是公開(kāi)的,因此無(wú)法在瀏覽器端對(duì)客戶端機(jī)密保密。 這就是為什么在上圖的第4步中,將授權(quán)代碼交換為訪問(wèn)令牌而不發(fā)送客戶端密鑰。

    原生移動(dòng)應(yīng)用

    與SPA類(lèi)似,本機(jī)移動(dòng)應(yīng)用程序被認(rèn)為是公共的,而不是機(jī)密的客戶端。 這就是客戶端機(jī)密不應(yīng)該存儲(chǔ)在移動(dòng)設(shè)備中(因此在請(qǐng)求訪問(wèn)令牌時(shí)不發(fā)送的原因)。 沒(méi)有在移動(dòng)設(shè)備中實(shí)現(xiàn)沒(méi)有客戶端密鑰的授權(quán)代碼流,可能會(huì)存在一些安全問(wèn)題。 這樣的問(wèn)題之一是,授權(quán)碼可能會(huì)被攻擊者攔截并交換為訪問(wèn)令牌。 為了減輕這種風(fēng)險(xiǎn),有一種稱為代碼交換證明密鑰(PKCE)的技術(shù)。 對(duì)于每個(gè)授權(quán)請(qǐng)求,客戶端都必須創(chuàng)建一個(gè)稱為Code Verifier的隨機(jī)密鑰。 授權(quán)代碼請(qǐng)求中包含其稱為Code Challenge的哈希版本。 授權(quán)服務(wù)器應(yīng)將此代碼質(zhì)詢與其生成的授權(quán)代碼相關(guān)聯(lián)。 以后,當(dāng)為訪問(wèn)令牌交換授權(quán)碼時(shí),客戶端將代碼驗(yàn)證程序作為查詢參數(shù)。 除了驗(yàn)證標(biāo)準(zhǔn)參數(shù)外,授權(quán)服務(wù)器還應(yīng)使用先前收到的Code Challenge驗(yàn)證Code Verifier。

  • 客戶端移動(dòng)應(yīng)用打開(kāi)帶有授權(quán)請(qǐng)求的瀏覽器。 授權(quán)請(qǐng)求包括客戶端ID,請(qǐng)求的范圍,重定向URI和代碼質(zhì)詢。
  • 授權(quán)請(qǐng)求發(fā)送到身份驗(yàn)證服務(wù)器
  • 資源所有者授權(quán)客戶。
  • 結(jié)果,授權(quán)碼被返回給用戶代理。
  • 授權(quán)碼被傳遞給客戶端。
  • 客戶端應(yīng)用將授權(quán)代碼和代碼驗(yàn)證程序以及重定向URI和客戶端ID發(fā)送到授權(quán)服務(wù)器。
  • 授權(quán)服務(wù)器將代碼驗(yàn)證程序的哈希值與先前發(fā)送的代碼質(zhì)詢進(jìn)行比較。 如果它們匹配,則將授權(quán)代碼交換為訪問(wèn)令牌(以及可選的刷新令牌)
  • 客戶端使用訪問(wèn)令牌代表資源所有者調(diào)用資源服務(wù)器。
  • 此外, 當(dāng)前的最佳實(shí)踐是僅使用外部用戶代理(而不是嵌入式Web視圖)來(lái)發(fā)送對(duì)授權(quán)碼的請(qǐng)求。

    隱性補(bǔ)助

    它類(lèi)似于“授權(quán)代碼授予”,但完全跳過(guò)了“授權(quán)代碼”步驟。 客戶端直接請(qǐng)求訪問(wèn)令牌,不需要授權(quán)碼。 此外,不涉及“客戶機(jī)密”。 在隱式授予中,不使用刷新令牌。 重要的是要提到,訪問(wèn)令牌以散列片段的形式在3xx重定向中返回,并且永遠(yuǎn)不會(huì)從瀏覽器發(fā)送。

    什么時(shí)候使用?

    它最初設(shè)計(jì)為SPA的流程。 它依賴于瀏覽器,可能無(wú)法在其他環(huán)境中安全地實(shí)現(xiàn)。 但是,如前所述,對(duì)于SPA,近年來(lái),越來(lái)越多的組織已經(jīng)朝著沒(méi)有客戶機(jī)密而不是隱式流程的授權(quán)代碼流發(fā)展。

    資源所有者密碼憑證授予

    在此流程中,資源所有者將其憑據(jù)直接提交到客戶端應(yīng)用程序。 客戶端應(yīng)用程序使用該憑據(jù)直接將它們交換為訪問(wèn)令牌(以及可選的刷新令牌)。 與客戶端憑據(jù)類(lèi)似,它不是基于重定向的流程。

  • 資源所有者將其憑據(jù)提交到客戶端應(yīng)用程序。
  • 客戶端將憑據(jù)轉(zhuǎn)發(fā)到授權(quán)服務(wù)器。
  • 授權(quán)服務(wù)器返回訪問(wèn)令牌(以及可選的刷新令牌)
  • 客戶端使用訪問(wèn)令牌代表資源所有者調(diào)用資源服務(wù)器。
  • 什么時(shí)候使用?

    資源所有者和客戶端應(yīng)用程序之間是否高度信任。 建議僅在不可能進(jìn)行其他處理時(shí)才使用它。 現(xiàn)在,設(shè)備流擴(kuò)展可以涵蓋資源所有者密碼憑據(jù)授予的大多數(shù)原始用例。

    設(shè)備流程

    這是OAuth 2.0中新增的擴(kuò)展流,用于覆蓋設(shè)備具有Internet連接但沒(méi)有瀏覽器或輸入文字的輸入能力受限的情況,例如電視。

    在此流程中,設(shè)備要求用戶使用瀏覽器(例如智能手機(jī))在設(shè)備上打開(kāi)特定的URL以便進(jìn)行授權(quán)。

    摘要

    這是設(shè)計(jì)用于給定場(chǎng)景的流程的快速摘要:

    • 服務(wù)器到服務(wù)器:客戶端憑據(jù)流
    • 服務(wù)器端應(yīng)用程序:授權(quán)代碼流
    • SPA:沒(méi)有客戶端機(jī)密或隱式流的授權(quán)代碼流
    • 移動(dòng)設(shè)備:PKCE的授權(quán)碼流
    • 沒(méi)有瀏覽器的設(shè)備:設(shè)備流

    翻譯自: https://www.javacodegeeks.com/2019/01/right-flow-job-oauth-2-0-flow-should-use.html

    oauth2.0協(xié)議流程

    總結(jié)

    以上是生活随笔為你收集整理的oauth2.0协议流程_正确的工作流程:我应该使用哪个OAuth 2.0流程?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。