

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 获取签名密钥以验证 OIDC 令牌
<a name="irsa-fetch-keys"></a>

Kubernetes 向每个 Kubernetes 服务账户发放一个 `ProjectedServiceAccountToken`。此令牌是一个 OIDC 令牌，更是一种 JSON Web 令牌（JWT）。Amazon EKS 为包含令牌的签名密钥的每个集群托管公有 OIDC 端点，这样外部系统就可以验证。

您需要获取 OIDC 公有签名密钥 [又称 JSON Web 密钥集（简称 JWKS）] 才能验证 `ProjectedServiceAccountToken`。在应用程序中使用这些密钥来验证令牌。例如，您可以使用 [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 密钥集（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"}]}
   ```