根據 OAuth 2.0 授權框架,當通過客戶端憑據授予流程獲得授權時,它說:“客戶端憑據授予型別必須僅由機密客戶端使用。”
我已經使用看門人(Ruby on Rails gem)實作了一個 OAuth 2.0 提供程式 API。但是,由 OAuth 2.0 提供商創建的非機密客戶端應用程式只能使用帶有其 client_id 的客戶端憑據授予流程,即沒有 client_secret。這是預期的行為嗎?
我在尋求保護我的資源服務器 API 時遇到了這個問題,這樣即使對于不需要最終用戶進行自動化的公共端點,即當客戶端是資源所有者時,客戶端仍然需要提供訪問權限令牌。
在此用例中,授權代碼授予流程不相關,因為資源所有者不是最終用戶,并且根據最新的 OAuth 2.0 安全建議,不建議使用隱式授予流程。在此基礎上,我發現 Client Credentials Grant 流程是最相關的流程,但我想仔細檢查它是否適合使用,即使 OAuth 2.0 框架說它必須只由機密客戶端使用。
uj5u.com熱心網友回復:
client_credentials 授權只能由機密客戶端使用,因為客戶端需要存盤機密。這是因為客戶端需要將 client_id 和 client_secret 發送到 Authorization Server 才能獲得 Token。我不知道只有 client_id 才能使用 client_credentials 流的任何特殊方式。
據我所知,守門人檔案也沒有提到這一點。
但是當客戶端需要保存機密時,我不會在非機密客戶端中使用 client_credentials 流。而且我不會使用任何只向 /token 端點發送其 client_id 而沒有其他任何內容的 Grant 來獲取令牌。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/338836.html
