我正在閱讀 gRCP 身份驗證,并根據我閱讀的內容,看起來身份驗證資訊(令牌)作為元資料附加到每個呼叫(與通道)。
我理解正確嗎?
我之所以如此困惑,是因為 gRPC 被吹捧為一種可以最小化流量的協議。看起來向每個呼叫添加 JWT 令牌將是相當大的開銷。
uj5u.com熱心網友回復:
有兩種身份驗證方法:
- 頻道憑據。這通常意味著具有客戶端證書的雙向 TLS
- 呼叫憑據。這通常意味著 OAuth 或 JWT,但它是每個請求發送的某種不記名令牌。基本的 HTTP 身份驗證就屬于這一類。
你可以選擇你使用的方法。TLS 客戶端證書在可用時絕對是“最佳”方式,但即使在完美的世界中也不能總是使用它。在某些情況下,例如使用 3-legged OAuth 進行模擬,您唯一的選擇是呼叫憑據。
在 Metadata 中發送每個請求的呼叫憑證與 HTTP 所采用的方法相同,并且是 JWT 或 OAuth 之類的唯一真正的選擇。大多數獨立于 gRPC,這種型別的身份驗證需要將令牌與每個請求相關聯。如果同一個令牌被重復使用,HTTP/2 中的 HPACK 可以避免在每個請求中重新發送整個令牌,但這主要只是減少了帶寬使用。
不支持基于 Exchange 的 HTTP 標頭身份驗證系統,這意味著沒有 HTTP 摘要。支持這種型別的系統會顯著增加延遲,但實際收益有限。NTLM/Kerberos 也是基于交換的,但與 HTTP 有一個奇怪的集成模型,根本不兼容 HTTP/2。這就是IIS和.Net除了 HTTP/1.1 之外不支持它的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357636.html
下一篇:如何讓用戶登錄我的網站?
