使用特定的凭证提供商 - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用特定的凭证提供商

SDK 使用凭证提供程序来检索、管理和提供访问所需的身份验证凭证(例如访问密钥和会话令牌) Amazon Web Services 服务。

凭证提供程序简化了从各种来源检索凭证的过程,实施了安全最佳实践,并支持跨 Amazon 环境的灵活身份验证策略。

指定凭证提供商

要绕过默认的凭证提供程序链,请指定服务客户端应使用哪个凭证提供程序。当您提供特定的凭据提供程序时,SDK 会跳过检查各个位置的过程,这会稍微缩短创建服务客户端的时间。

例如,如果您使用环境变量设置默认配置,请在服务客户端生成器上为该credentialsProvider方法提供一个EnvironmentVariableCredentialsProvider对象,如以下代码片段所示:

Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .build();

有关凭证提供者和提供者链的完整列表,请参阅 API 参考中的所有已知实现类AwsCredentialsProvider

注意

您也可以通过实现AwsCredentialsProvider接口来使用自己的凭证提供商或提供者链。

配置凭证提供商

作为配置凭证提供程序实现的示例,您可能希望让 SDK 使用后台线程在证书过期之前对其进行预提取(提前检索)。这样,您就可以避免检索新凭据的阻塞调用。

以下示例显示了一个示例,该示例通过StsAssumeRoleCredentialsProvider在生成器true上将asyncCredentialUpdateEnabled属性设置为,使用后台线程来预取凭证:

S3Client s3Client = S3Client.builder() .credentialsProvider(StsAssumeRoleCredentialsProvider.builder() .asyncCredentialUpdateEnabled(true) .stsClient(StsClient.create()) .refreshRequest(r -> r .roleArn("arn:aws:iam::111122223333:role/S3-listbuckets-only-role") .roleSessionName("test-temp-session") .durationSeconds(900)) .build()) .build();

首次在上s3Client调用操作时,会向 Amazon Security Token Service (STS) 发送一个AssumeRoleRequest。STS 返回有效期为 15 分钟(900 秒)的临时证书。s3Client实例使用缓存的凭证,直到需要在 15 分钟之前刷新它们。默认情况下,SDK 会在当前会话到期前 5 分钟到 1 分钟之间尝试为新会话检索新凭证。预取窗口可使用prefetchTimestaleTime属性进行配置。

您可以类似地配置以下基于会话的凭证提供程序:

  • StsWebIdentityTokenFileCredentialsProvider

  • StsGetSessionTokenCredentialsProvider

  • StsGetFederationTokenCredentialsProvider

  • StsAssumeRoleWithWebIdentityCredentialsProvider

  • StsAssumeRoleWithSamlCredentialsProvider

  • StsAssumeRoleCredentialsProvider

  • DefaultCredentialsProvider(当它委托给使用会话的凭证提供商时)

  • ProcessCredentialsProvider

  • WebIdentityTokenFileCredentialsProvider

  • ContainerCredentialsProvider

  • InstanceProfileCredentialsProvider