[英]How to use multifactor authentication with OAuth Resource Owner Password Credentials Grant?
您幾乎肯定不需要資源所有者密碼憑據授予 (ROPC)。 為什么我想要?
我正在使用無瀏覽器的設備。 該設備是資源服務器並使用授權服務器。 在這個用例中(我說這個用例是因為設備還支持其他訪問方法),設備代理用戶的憑據並從授權服務器請求令牌(用於訪問自身的令牌)。 因此,設備代理身份驗證和授權的憑據。 它本質上說,“我是設備 A。這是用戶 B 的憑據。請給我一個令牌,允許設備 A 代表用戶 B 訪問設備 A。”
同樣,該設備沒有瀏覽器。 基於Scott Brady 的不要使用 OAuth 文章,這是關於資源所有者密碼憑據授予 (RFC 6749 § 4.3) 是合理選擇的唯一應用程序。
但我想使用多因素身份驗證。
RFC 6749 和文檔都不支持發送第二個因素。 Scott Brady 的那篇文章稱,故意不支持多因素身份驗證。
所以:
我基本上是問,在這種情況下是否建議不符合標准,或者這種情況是否意味着我已經做錯了什么?
為了清楚我的想法,這種情況需要兩個附加功能:
我的非標准計划是:
對於錯誤響應,我遇到了“interaction_required”。 我發現了一個示例,其中這似乎與多因素身份驗證相關,但以不同的方式使用。
標記為 identityserver4 因為如果沒有標准,我也對相關的最佳實踐感興趣。
我發現了這個相關的問題,但它涉及不同的流程。
在OAuth 2.0 Device Flow for Browserless and Input Constrained Devices規范之前,您可能需要 ROPC。 但現在你沒有。 RFC(仍在草案中)正是針對這種情況制定的。
設備不是處理用戶密碼,而是聯系授權服務器並獲取最終用戶代碼。 用戶使用此代碼登錄授權服務器並對設備進行授權。
圖 1 來自 RFC (v. 07) 草案:
+----------+ +----------------+
| |>---(A)-- Client Identifier --->| |
| | | |
| |<---(B)-- Verification Code, --<| |
| | User Code, | |
| | & Verification URI | |
| Device | | |
| Client | Client Identifier & | |
| |>---(E)-- Verification Code --->| |
| | polling... | |
| |>---(E)-- Verification Code --->| |
| | | Authorization |
| |<---(F)-- Access Token --------<| Server |
+----------+ (w/ Optional Refresh Token) | |
v | |
: | |
(C) User Code & Verification URI | |
: | |
v | |
+----------+ | |
| End-user | | |
| at |<---(D)-- User authenticates -->| |
| Browser | | |
+----------+ +----------------+
Figure 1: Device Flow.
幾個明顯的區別:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.