OIDC 联合身份验证 - AWS Identity and Access Management

OIDC 联合身份验证

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

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

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

对于大多数方案,我们建议您使用 Amazon Cognito,因为它可充当身份代理并为您完成许多联合工作。有关详细信息,请参阅以下部分:将 Amazon Cognito 用于移动应用程序

注意

由 OpenID Connect(OIDC)身份提供程序颁发的 JSON Web 令牌(JWT)在 exp 声明中包含指定令牌何时过期的过期时间。在 OpenID Connect (OIDC) Core 1.0 标准允许的情况下,IAM 在 JWT 中指定的到期时间之外提供五分钟的时段来解决时钟偏差。这意味着将接受 IAM 在到期时间后但在这五分钟内收到的 OIDC JWT 以进行进一步的评估和处理。