

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 擷取簽署金鑰以驗證 OIDC 權杖
<a name="irsa-fetch-keys"></a>

Kubernetes 會為每個 Kubernetes Service 帳戶發出一個 `ProjectedServiceAccountToken`。此權杖是 OIDC 權杖，同時也是一種 JSON Web 權杖 (JWT)。Amazon EKS 為每個叢集託管公有 OIDC 端點，其中包含權杖的簽署金鑰，讓外部系統可以對其進行驗證。

若要驗證 `ProjectedServiceAccountToken`，您需要擷取 OIDC 公有簽署金鑰，也稱為 JSON Web Key Set (JWKS)。在應用程式中使用這些金鑰，以驗證權杖。例如，您可以使用 [PyJWT Python 程式庫](https://pyjwt.readthedocs.io/en/latest/)，以利用這些金鑰來驗證權杖。如需 `ProjectedServiceAccountToken` 的詳細資訊，請參閱 [IAM, Kubernetes 和 OpenID Connect (OIDC) 背景資訊](iam-roles-for-service-accounts.md#irsa-oidc-background)。

## 先決條件
<a name="_prerequisites"></a>
+ 叢集的現有 AWS Identity and Access Management (IAM) OpenID Connect (OIDC) 提供商。若要判定您是否已經擁有一個，或是要建立一個，請參閱 [為您的叢集建立 IAM OIDC 身分提供者](enable-iam-roles-for-service-accounts.md)。
+  **AWS CLI**：命令列工具，適用於使用 AWS 服務，包括 Amazon EKS。如需詳細資訊，請參閱《AWS 命令列介面使用者指南》中的[安裝](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)。安裝 AWS CLI 後，建議您也進行設定。如需詳細資訊，請參閱《AWS 命令列介面使用者指南》中的[使用 aws configure 的快速組態](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)。

## 程序
<a name="_procedure"></a>

1. 使用 AWS CLI 擷取 Amazon EKS 叢集的 OIDC URL。

   ```
   $ aws eks describe-cluster --name my-cluster --query 'cluster.identity.oidc.issuer'
   "https://oidc.eks.us-west-2.amazonaws.com/id/8EBDXXXX00BAE"
   ```

1. 使用 curl 或類似工具擷取公有簽署金鑰。結果為 [JSON Web Key Set (JWKS)](https://www.rfc-editor.org/rfc/rfc7517#section-5)。
**重要**  
Amazon EKS 會調節對 OIDC 端點的呼叫。您應該快取公有簽署金鑰。遵守回應中包含的 `cache-control` 標題。
**重要**  
Amazon EKS 每七天輪換一次 OIDC 簽署金鑰。

   ```
   $ curl https://oidc.eks.us-west-2.amazonaws.com/id/8EBDXXXX00BAE/keys
   {"keys":[{"kty":"RSA","kid":"2284XXXX4a40","use":"sig","alg":"RS256","n":"wklbXXXXMVfQ","e":"AQAB"}]}
   ```