DevToolKits.app
工具介紹

JWKS (JSON Web Key Set) 是什麼?

解說 JWKS 的原理、角色,以及如何在 DevToolKits 上生成 JWKS。

JWKS 概念示意圖

「公鑰……到底放在哪裡了?」

在使用 RSA 等公鑰方式進行 JWT 簽章驗證時,總會遇到這個難題: 「公鑰該如何派送才最安全?」、「更新金鑰時,難道要改動所有伺服器的設定嗎?」

解決這些煩惱的聰明方案,就是 JWKS (JSON Web Key Set) 這套機制。

JWKS:公鑰的「展示櫃」

JWKS(JSON Web 金鑰集)顧名思義就是「以 JSON 格式撰寫的金鑰集合」。
驗證伺服器(如 Auth0 或 Cognito)會在特定的 URL 公開這份 JSON,而需要驗證 Token 的 API 伺服器則會去該位址讀取它。

這就像是:「最新的公鑰都展示在這個展示櫃裡,請視需求自由取用」

JWKS 的迷人之處

  1. 自動輪換 (Rotation):即使更新了金鑰,也只需更換展示櫃裡的內容。API 伺服器只需查看該 URL,就能自動取得最新的金鑰。
  2. 管理多把金鑰:可以同時擺放「舊金鑰」與「新金鑰」,讓金鑰切換期也能順暢過渡,不影響服務。
  3. 世界標準:由於被 OAuth 2.0 或 OIDC 廣泛採用,絕大多數的驗證函式庫都提供原生支援。

窺探 JWKS 內部:其實只是 JSON

雖然名稱聽起來很專業,但結構其實非常簡單。就是在 keys 陣列中放入個別金鑰的資訊:

{
  "keys": [
    {
      "kty": "RSA",           // 金鑰種類 (如 RSA)
      "use": "sig",           // 用途 (用於簽章!)
      "kid": "my-key-2024",   // 金鑰識別碼 (像是金鑰的名字)
      "n": "...",             // 公鑰資料 1
      "e": "AQAB"             // 公鑰資料 2
    }
  ]
}

在 DevToolKits 體驗「建立」 JWKS

使用本站的 JWKS 生成工具,您可以直接在瀏覽器中生成開發或測試所需的金鑰對。

您可以同時獲得「公鑰 (JWKS 格式)」與「私鑰 (PEM 格式)」,非常適合用於本地端驗證功能的實作測試。當然,這一切都在瀏覽器內部完成,不必擔心您的私鑰外流到網路上。

結語

JWKS 是一項偉大的發明,它讓複雜的金鑰管理變得簡單且安全。
正確理解並活用這套機制,能讓您的驗證系統變得更加優雅。如果您在為「金鑰派送」感到困擾,請務必想起這座展示櫃。

Related Tools

廣告

廣告