AWSSecurityTokenServiceClient

AWSSecurityTokenServiceClient

我正在尝试使用SAML requet(来自ADFS)从STS获取AWS的临时证书。
我有SAML token ,角色arn和principalARN。如果我使用它通过AWS CLI登录,它们将起作用。但是将相同的3与Java SDK一起使用会产生以下错误。

无法从链中的任何提供商加载AWS凭证

这是我正在使用的Java代码。

AssumeRoleWithSAMLRequest samlreq =new AssumeRoleWithSAMLRequest().withPrincipalArn(principalARN).withRoleArn(roleARN).withSAMLAssertion(SAMLToken);

AWSSecurityTokenServiceClient stsclient = new AWSSecurityTokenServiceClient();

AssumeRoleWithSAMLResult tempcreds=stsclient.assumeRoleWithSAML(samlreq);

知道我做错了什么还是想念什么?

这是堆栈跟踪:

线程“main” com.amazonaws.AmazonClientException中的异常:无法
从以下位置的链中的任何提供商加载AWS凭证
com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:117)

com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.invoke(AWSSecurityTokenServiceClient.java:1098)

com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.assumeRoleWithSAML(AWSSecurityTokenServiceClient.java:575)
在App.main(App.java:83)

最佳答案

我的工作终于有了补充:

BasicAWSCredentials basicCreds=new BasicAWSCredentials("", "");
AWSSecurityTokenServiceClient stsclient = new AWSSecurityTokenServiceClient(basicCreds);

基本上给sts客户端一个空白的凭据集。

07-25 23:33