為什麼你應該棄用資源擁有者密碼憑證 (ROPC) 授權類型
資源擁有者密碼憑證 (ROPC) 授權類型是一個過時的 OAuth 2.0 流程,會帶來安全風險,應該棄用。在這篇文章中,我們將說明為什麼你應該避免在應用程式中使用 ROPC。
介紹
資源擁有者密碼憑證 (ROPC) 授權類型又稱密碼授權類型,是一個 OAuth 2.0 流程,允許應用程式交換用戶的用戶名和密碼以獲取訪問令牌。它最初在 OAuth 2.0 規範中被引入,作為支持 HTTP 基本身份驗證或傳統本機應用程式等傳統應用程式的方式,這些應用程式無法使用更安全的 OAuth 令牌化流程。
然而,ROPC 授權類型帶來了幾個安全風險,在 OAuth 2.0 安全最佳實踐中已被標記為絕不應使用。
最近,我們收到了一些來自客戶的詢問,希望獲得實現 ROPC 授權類型的指導或支持。在這篇文章中,我們將解釋為什麼你應該避免使用 ROPC 授權類型,尤其是在你的新應用程式中。
ROPC 授權類型vs.授權碼流程
ROPC 授權類型如何運作
ROPC 授權類型是一個簡單的流程,通過使用者的用戶名和密碼交換訪問令牌。用戶端應用程式直接收集用戶的憑證並將其直接發送到授權服務器。然後授權服務器驗證憑證並向用戶端發出訪問令牌。
授權碼流程如何運作
相比之下,授權碼流程是推薦的網頁應用程式的 OAuth 2.0 流程。它涉及在用戶端應用程式、授權服務器和用戶的瀏覽器之間的多個步驟和重定向。授權碼流程更安全,因為它不會讓用戶的憑證暴露給用戶端應用程式。
ROPC 授權類型和授權碼流程之間的主要區別在於,ROPC 會讓用戶的憑證暴露給用戶端應用程式,而授權碼流程則不會。用戶憑證應在授權服務器內保密。每當用戶端應用程式代表用戶請求資源時,應重定向用戶到授權服務器進行身份驗證和授權用戶端應用程式。這樣可以將授權數據保留在用戶端應用程式的一個最小範圍內。
ROPC 授權類型的安全風險
1. 用戶憑證曝光
如前所述,ROPC 授權類型會讓用戶的憑證暴露給用戶端應用程式。這是一個重大安全風險,因為用戶端應用程式可能存儲或記錄用戶的憑證,並在用戶不知情的情況下重新授權。
特別是對於像移動應用或單頁面應用這樣的公用客戶端應用程式而言,用戶端應用程式可以容易地被植入或逆向工程來提取用戶的憑證。無論是移動應用還是運行在用戶瀏覽器上的單頁面應用都無法將秘密保密。因此,它們無法在不暴露用戶憑證的情況下對用戶進行身份驗證。
即使資源擁有者與用戶端應用程式之間有信任關係,用戶端應用程式在整個身份驗證過程中都扮演著中間人的角色,可能會被其他惡意行為者劫持。惡意行為者可以竊取用戶的憑證,冒充用戶訪問用戶的資源。
根據用戶端應用程式的安全姿態可以有多種方式竊取用戶的憑證,如鍵盤記錄器、網釣攻擊或惡意軟件。更 不用說客戶端憑證在每次授權請求時都會通過網絡進行傳輸,這進一步增加了憑證攔截的風險。
想像一下,如果你有多個應用程式使用 ROPC 授權類型,那麼憑證暴露的潛在風險就會成倍增加。
2. ROPC 不支持用戶同意
ROPC 授權類型不支持用戶同意。當用戶端應用程式直接收集用戶的憑證時,用戶沒有機會查看和批准用戶端應用程式對其資源的訪問權限。這侵犯了用戶的隱私和信任。
用戶應該有權決定哪些用戶端應用程式可以訪問其資源以及訪問多長時間。尤其對於第三方應用程式而言,用戶許可機制對於保護資源擁有者的數據是必不可少的,並且對於符合如 GDPR 的數據保護法規也是必不可少的。
3. ROPC 不支持多因素身份驗證
多因素身份驗證 (MFA) 是一項安全實施,需要用戶提供兩個或更多驗證因素以訪問其資源。它為身份驗證過程增加了一層額外的安全性。ROPC 授權類型不支持 MFA。相反,它將身份驗證過程限制為單因素,令牌請求僅基於用戶的憑證。無法使用 ROPC 授權類型實現基於挑戰的身份驗證機制,例如 SMS OTP、email OTP 或 WebAuthn。