STS,SAML和Java SDK无法从链中的任何提供程序加载AWS凭据

Rit*_*waj 3 java amazon-web-services aws-sdk

我正在尝试使用SAML requet(来自ADFS)从STS获取AWS的临时凭证.我有SAML令牌,角色arn和principalARN.如果我使用它来使用AWS CLI登录它们就可以了.但是使用与Java SDK相同的3会产生以下错误.

无法从链中的任何提供程序加载AWS凭据

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

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

AWSSecurityTokenServiceClient stsclient = new AWSSecurityTokenServiceClient();

AssumeRoleWithSAMLResult tempcreds=stsclient.assumeRoleWithSAML(samlreq);
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么或错过了吗?

这是堆栈跟踪:

线程"main"中的异常com.amazonaws.AmazonClientException:无法从com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:117)链中的任何提供者加载AWS凭证,地址为com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient .invoke(AWSSecurityTokenServiceClient.java:1098)位于App.main的com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.assumeRoleWithSAML(AWSSecurityTokenServiceClient.java:575)(App.java:83)

Rit*_*waj 5

我得到它的工作最后不得不添加:

BasicAWSCredentials basicCreds=new BasicAWSCredentials("", "");
AWSSecurityTokenServiceClient stsclient = new AWSSecurityTokenServiceClient(basicCreds);   
Run Code Online (Sandbox Code Playgroud)

基本上给sts客户端一组空白的凭据.