我一直在尝试使用 SAML 从基于云的 SAML 提供商到托管在 AWS S3 存储桶上的应用程序进行身份联合。SAML IdP 将 SAMLResponse 发布到配置的 ACS(Web 应用程序中的 API 网关端点)。当我将这个 SAMLResponse 与 Postman 一起使用到 AssumeRoleWithSAML 来获取 STS 令牌时,它可以在正确的响应 200 下正常工作。但是使用 CLI(AWS 命令行界面)低于错误时,相同的 SAMLResponse 无法正常工作。我尝试使用 AWS CLI 版本 1.x 以及最新的 2.x,响应相同。
命令:
aws sts 假设-role-with-saml --role-arn arn:aws:iam::123456789:role/xxxxx --principal-arn arn:aws:iam::123456789:saml-provider/xxxx-saml-provider - -saml-assertion 文件://samlresponse.log
错误:
调用 AssumeRoleWithSAML 操作时发生错误 (InvalidIdentityToken):无效的 base64 SAMLResponse(服务:AWSOpenIdDiscoveryService;状态代码:400;错误代码:AuthSamlInvalidSamlResponseException;
无法找到任何好的帮助来了解问题所在,并且 CLI 没有给出任何有意义的错误,例如“令牌已过期”等。
以下是使用 Postman 的示例 POST 请求,效果很好