STS、SAML 和 Java SDK 无法从链中的任何提供商加载 AWS 凭证
STS ,SAML and Java SDK Unable to load AWS credentials from any provider in the chain
我正在尝试使用 SAML 请求(来自 ADFS)从 STS 获取 AWS 的临时凭证。
我有 SAML 令牌、角色 arn 和 principalARN。如果我用它来使用 AWS CLI 登录,它们就可以工作。但是将相同的 3 与 Java SDK 一起使用会出现以下错误。
Unable to load AWS credentials from any provider in the chain
这是我正在使用的 Java 代码。
AssumeRoleWithSAMLRequest samlreq =new AssumeRoleWithSAMLRequest().withPrincipalArn(principalARN).withRoleArn(roleARN).withSAMLAssertion(SAMLToken);
AWSSecurityTokenServiceClient stsclient = new AWSSecurityTokenServiceClient();
AssumeRoleWithSAMLResult tempcreds=stsclient.assumeRoleWithSAML(samlreq);
知道我做错了什么或遗漏了什么吗?
这是堆栈跟踪:
Exception in thread "main" com.amazonaws.AmazonClientException: Unable
to load AWS credentials from any provider in the chain at
com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:117)
at
com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.invoke(AWSSecurityTokenServiceClient.java:1098)
at
com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.assumeRoleWithSAML(AWSSecurityTokenServiceClient.java:575)
at App.main(App.java:83)
我让它工作终于不得不添加:
BasicAWSCredentials basicCreds=new BasicAWSCredentials("", "");
AWSSecurityTokenServiceClient stsclient = new AWSSecurityTokenServiceClient(basicCreds);
基本上给 sts 客户端一组空白凭据。
AWSSecurityTokenServiceClient 已弃用。以下代码也有效。
BasicAWSCredentials theAWSCredentials= new BasicAWSCredentials("","");
AWSCredentialsProvider theAWSCredentialsProvider = new AWSStaticCredentialsProvider(theAWSCredentials);
AWSSecurityTokenService theSecurityTokenService = AWSSecurityTokenServiceClientBuilder.standard().withCredentials(theAWSCredentialsProvider).build();
我正在尝试使用 SAML 请求(来自 ADFS)从 STS 获取 AWS 的临时凭证。 我有 SAML 令牌、角色 arn 和 principalARN。如果我用它来使用 AWS CLI 登录,它们就可以工作。但是将相同的 3 与 Java SDK 一起使用会出现以下错误。
Unable to load AWS credentials from any provider in the chain
这是我正在使用的 Java 代码。
AssumeRoleWithSAMLRequest samlreq =new AssumeRoleWithSAMLRequest().withPrincipalArn(principalARN).withRoleArn(roleARN).withSAMLAssertion(SAMLToken);
AWSSecurityTokenServiceClient stsclient = new AWSSecurityTokenServiceClient();
AssumeRoleWithSAMLResult tempcreds=stsclient.assumeRoleWithSAML(samlreq);
知道我做错了什么或遗漏了什么吗?
这是堆栈跟踪:
Exception in thread "main" com.amazonaws.AmazonClientException: Unable to load AWS credentials from any provider in the chain at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:117) at com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.invoke(AWSSecurityTokenServiceClient.java:1098) at com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.assumeRoleWithSAML(AWSSecurityTokenServiceClient.java:575) at App.main(App.java:83)
我让它工作终于不得不添加:
BasicAWSCredentials basicCreds=new BasicAWSCredentials("", "");
AWSSecurityTokenServiceClient stsclient = new AWSSecurityTokenServiceClient(basicCreds);
基本上给 sts 客户端一组空白凭据。
AWSSecurityTokenServiceClient 已弃用。以下代码也有效。
BasicAWSCredentials theAWSCredentials= new BasicAWSCredentials("","");
AWSCredentialsProvider theAWSCredentialsProvider = new AWSStaticCredentialsProvider(theAWSCredentials);
AWSSecurityTokenService theSecurityTokenService = AWSSecurityTokenServiceClientBuilder.standard().withCredentials(theAWSCredentialsProvider).build();