

# OIDC 联合身份验证
<a name="id_roles_providers_oidc"></a>

假设您要创建一个访问 Amazon 资源的应用程序，例如使用工作流访问 Amazon S3 和 DynamoDB 的 GitHub Actions。

当您使用这些工作流时，将向必须使用 Amazon 访问密钥进行签名的 Amazon 服务提出请求。但是，我们**强烈**建议您**不要**将 Amazon 凭证长期存储在 Amazon 之外的应用程序中。相反，使用 *OIDC 联合身份验证*将应用程序配置为在需要时动态请求临时 Amazon 安全凭证。提供的临时凭证会映射到一个 Amazon 角色，该角色将只拥有执行该应用程序所需任务的必要权限。

借助 OIDC 联合身份验证，您不需要创建自定义登录代码或管理自己的用户身份。相反，您可以在应用程序（例如 GitHub Actions 或任何其他兼容 [OpenID Connect（OIDC）](http://openid.net/connect/)的 IdP）中使用 OIDC 进行 Amazon 身份验证。他们会接收身份验证令牌（称为 JSON Web 令牌，JWT），然后用该令牌交换 Amazon 中的临时安全凭证，这些凭证映射到有权使用您 Amazon Web Services 账户 中资源的 IAM 角色。使用 IdP 有助您确保 Amazon Web Services 账户的安全，因为您不必随应用程序嵌入和分配长期安全凭证。

OIDC 联合身份验证支持机器对机器身份验证（例如，CI/CD 管道、自动脚本和无服务器应用程序）和人工用户身份验证。对于需要管理用户注册、登录和用户个人资料的人工用户身份验证场景，可以考虑将 [Amazon Cognito](https://www.amazonaws.cn/cognito/) 用作身份凭证代理程序。有关将 Amazon Cognito 与 OIDC 结合使用的详细信息，请参阅 [用于移动应用程序的 Amazon Cognito](id_federation_common_scenarios.md#id_roles_providers_oidc_cognito)。

**注意**  
由 OpenID Connect (OIDC) 身份提供程序颁发的 JSON Web 令牌 (JWT) 在 `exp` 声明中包含指定令牌何时过期的过期时间。在 [OpenID Connect (OIDC) Core 1.0 标准](https://openid.net/specs/openid-connect-core-1_0.html)允许的情况下，IAM 在 JWT 中指定的到期时间之外提供五分钟的时段来解决时钟偏差。这意味着将接受 IAM 在到期时间后但在这五分钟内收到的 OIDC JWT 以进行进一步的评估和处理。

**Topics**
+ [有关 OIDC 联合身份验证的其他资源](#id_roles_providers_oidc_resources)
+ [在 IAM 中创建 OpenID Connect（OIDC）身份提供者](id_roles_providers_create_oidc.md)
+ [获取 OpenID Connect 身份提供者的指纹](id_roles_providers_create_oidc_verify-thumbprint.md)
+ [适用于共享 OIDC 提供者的身份提供者控制](id_roles_providers_oidc_secure-by-default.md)

## 有关 OIDC 联合身份验证的其他资源
<a name="id_roles_providers_oidc_resources"></a>

以下资源可帮助您详细了解 OIDC 联合身份验证：
+ 通过[在 Amazon Web Services 中配置 OpenID Connect](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)，从而在 GitHub 工作流中使用 OpenID Connect
+ 《适用于 Android 的 Amplify 库指南》**中的 [Amazon Cognito 身份](https://docs.amplify.aws/lib/auth/advanced/q/platform/android/)和《适用于 Swift 的 Amplify 库指南》**中的 [Amazon Cognito 身份](https://docs.amplify.aws/lib/auth/advanced/q/platform/ios/)。
+ *Amazon 安全博客*上的[授予 Amazon 资源访问权限时如何使用外部 ID](https://www.amazonaws.cn/blogs/security/how-to-use-external-id-when-granting-access-to-your-aws-resources/)提供了安全配置跨账户访问和外部身份联合验证的指导。