繁體中文

開發者工具 · JWT 解碼器

ID 令牌與存取權杖:為什麼 OpenID Connect JWT 不是 API 金鑰

· 背景

jwt oauth 身份驗證

路由至不同消費者的 ID 和存取令牌
原始 ToolAcre 向量圖

兩者可能都是來自同一提供者的 JWT,但它們回答不同的問題。這篇文章解釋了 ID 令牌和存取權杖各自包含什麼、誰應該使用它們以及如何透過解碼來區分它們。

API 拒絕看起來完全有效的令牌——因為它從來就不是為 API 設計的

API 可以拒絕格式正確、簽署正確的令牌,因為該憑證是為另一個使用者和目的而頒發的。 「這是一個JWT」描述了一種可能的格式,而不是允許將其發送到任何地方。 ID 令牌和存取令牌回答身分流中的不同問題。

ToolAcre 可以公開支援偵錯的標頭和有效負載模式,但它無法驗證令牌或驗證 OpenID Connect 設定檔。最終的分類必須來自提供者合約、發行流程和可信賴驗證結果,而不是目視檢查。

ID-token claims may suggest identity use;此通用解碼器不驗證 OpenID Connect 設定檔

An ID token communicates authentication information to the client that requested sign-in.根據配置檔案,可见宣告可能包括隨机數、身份驗證時間、身份驗證方法或與另一個令牌相關的哈希值。這些欄位不是通用 API 授權。

解碼器將 `auth_time` 視為時間形狀字段,並將其他名稱顯示為特定於應用程式的名稱,除非它們屬於其核心七個名稱。它不驗證隨機數、`at_hash`、`amr` 或客戶端受眾語義。可讀的身份有效負載在用戶端正確驗證之前保持不可信狀態。

存取權杖可以是 JWT 或不透明的;只有三部分 JWT 適合此解碼器

存取權杖授權對授權系統下的資源伺服器的呼叫。它可能是 JWT 或不透明字串。只有由三部分組成的籤名形状适合 ToolAcre 的路線;不透明令牌没有可解碼的通用客戶端結構,因此不應强制通過此工具。

JWT 存取權杖可以攜帶受眾和範圍訊息,但這些值需要經過驗證的驗證和資源策略。瀏覽器面板不實作資源伺服器,且無法判斷範圍是否允許特定操作。

刷新令牌 — 通常是不透明的,永遠不會被解碼,也永遠不會發送到 API

刷新令牌支援根據提供者規則取得替換存取憑證。它通常是不透明的,不適用於資源 API。它也是一個高價值的憑證,因此將其貼到解碼器中會產生風險,而不會帶來可靠的診斷益處。

不要推斷每個令牌形狀的值都應該被解碼。使用提供程序工具和受控日誌來處理刷新失敗。 ToolAcre 對生產令牌的明確警告在這裡特別適用,且其三段解析器不提供刷新操作。

受眾不同 — ID 令牌中的客戶端 ID 與存取權杖中的資源

受眾是強而有力的線索,因為目標消費者不同。 ID 令牌通常以用戶端為目標,而存取令牌以資源為目標。確切的識別碼和表示形式取決於提供者和設定檔案,因此本文並未發明通用字串模式。

標頭 `typ` 也可以提供明確標籤,但在驗證之前它仍然是令牌控制的資料。僅當字符串 `typ` 與 `JWT` 不同時,ToolAcre 才會發出警告;它無法識別每個配置檔案標籤或將其轉化為授权决定。

工作範例:比較可見欄位而不將它們視為令牌類型的證明

解碼兩個綜合範例:一個攜帶面向客戶端的身份驗證宣告,另一個攜帶資源受眾和範圍。記錄 `aud`、`typ` 和有效負載名稱的差異。該練習教的是向發行人詢問什麼,而不是如何證明任一範例的身份。

偽造的令牌可以複製相同的標籤,而真實的令牌可以使用特定於提供者的約定。從發布回應和檔案中確認類型,然後與目標消費者進行驗證。解碼器的輸出是支持證據,而不是決定權威。

這不包括什麼 - 發出這些令牌的 OAuth 流程,這是一個單獨的主題

此比較不解釋授權代碼、裝置或其他頒發令牌的流程。它還不涵蓋特定於提供者的驗證步驟、不透明的存取令牌自省或刷新輪換。這些主題取決於所選的生態系統和部署。

縮小直接調試問題的範圍:客戶端收到了哪些憑證,誰是其目標消費者,以及哪個可信任元件驗證了它?回答這三個問題可以防止通用 JWT 形狀刪除協議角色。

重點:在發送之前查看 aud 和typ — ToolAcre JWT 解碼器可讓您檢查您持有哪種令牌

在發送令牌之前查看受眾和類型,但在驗證成功之前不要信任任何一個欄位。 ID令牌屬於其客戶端驗證邊界;存取權杖屬於其資源伺服器。刷新令牌屬於提供者的刷新過程,而不是 API。

ToolAcre 可協助閱讀安全的三部分範例,但不聲稱對它們進行分類或驗證。使用它來發現可能的錯誤,然後讓記錄的流程和獨立配置的驗證程序確定憑證的真正用途。