问题标签 [aws-sts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1542 浏览

javascript - 如何将凭证传递给 AWS STS GetSessionToken

我编写了一个 javascript 文件管理器来管理 Amazon S3 上的用户文件。它使用 AWS Javascript API。使用硬编码的 IAM 用户凭证开发它,现在生产想要使用临时凭证代替。

我的计划是让我们的 PHP 服务器通过 STS GetSessionToken 通过从 JS 代码到 PHP 的 AJAX 回调从 IAM 凭证生成临时凭证。看起来很简单,但我似乎找不到任何关于如何将 IAM 密钥/秘密传递给 URL 中的 GetSessionToken 的文档。AWS 文档中的示例都显示如下:

https://sts.amazonaws.com/?Version=2011-06-15&Action=GetSessionToken&DurationSeconds=3600&AUTHPARAMS

我猜“AUTHPARAMS”是如此明显,以至于我不需要任何进一步的解释。但遗憾的是,我确实需要进一步的解释。我从 PHP 方面需要的只是这个小调用,所以我真的不想为此安装整个 AWS PHP 开发工具包。如果我能找出如何为这个调用构建 URL,那么我可以通过 CURL 将其发送出去,然后一切就绪。至少这是计划。

有没有办法通过 REST api 直接调用 GetSessionToken,并将 IAM 密钥/秘密传递给它,还是真的比这更复杂?

0 投票
0 回答
381 浏览

amazon-web-services - Amazon Web Services:使用 SAML 担任角色:安全令牌服务限制

我们正在与 AWS 实施基于 SAML 的联合以访问 S3 存储桶。

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html

这种方法存在安全漏洞。如果我们做 STS:AssumeRole,任何人都可以调试,获得 SAML Assertion 并使用它来生成他自己的 Temporary Access Keys。因此,我们将密钥生成过程移至服务器端(使用 STS Java SDK)以在服务器端获取密钥。无论如何,我们无法通过 IP 检查限制 STS 调用,因此 STS 调用只能从我们的服务器(或 DP)有效。

我如何编写 IAM 策略以确保除了注册 IP 之外没有人可以从任何地方调用任何安全令牌服务 (sts:*)?我应该将此政策附加到哪个实体?(角色?)

我在 IAM 尝试了所有可能的策略组合,但没有任何成果。而且我不能完全限制 STS 服务(我可以针对特定地区做,但全球 STS 服务将始终处于活动状态)

我只是不明白为什么亚马逊会让 STS 对任何人开放。

提前致谢...

0 投票
1 回答
2852 浏览

javascript - 使用 STS 凭据上传 aws-sdk - 403 错误

我一直在尝试设置亚马逊的 STS(安全令牌服务)来为客户端上传到 S3 创建临时凭证。

我可以使用从 IAM 用户生成的访问密钥使代码正常工作,但是当我换出访问密钥/秘密密钥然后添加会话令牌时,我得到了 403 Forbidden。S3 访问日志不会记录该尝试。

在 STS 方面,我通过 aws-sdk 为 node.js 生成凭证,使用与上面相同的 IAM 用户,SDK 愉快地生成 STS 凭证:

上传测试代码:

aws-sdk 版本:2.4.8 node.js:4.2.3

我已经使用 IAM 模拟器测试了它假定的角色策略,它说它很好。尝试使用 sdk 在浏览器端和服务器端上传。

我打开了 S3 CORS(用于调试)以确保那里没有发生任何奇怪的事情:

我已经打开的 S3 策略(再次用于调试):

有任何想法吗?

0 投票
1 回答
397 浏览

java - 为什么 AmazonSTSCredentialsProvider 仅在移动 SDK 中而不在 aws-java-sdk 中

我正在使用 AWS Assume 角色访问逻辑。为此,我试图在前一个凭证过期之前获得新的临时凭证。

我发现 AmazonSTSCredentialsProvider 正在执行此逻辑。但这仅存在于移动 SDK 中,而不存在于 java SDK 中。java SDK没有这个类或者Java SDK有其他提供者来做这个临时凭证刷新有什么原因吗?

0 投票
1 回答
1403 浏览

amazon-cognito - Amazon Cognito:如何将凭证传递给服务器端应用程序

我有一个客户端应用程序(用 Java 开发,而不是 Android),它使用 Amazon Cognito 用户池对用户进行身份验证。为了清楚起见:该应用程序显示一个用户名/密码输入对话框,然后使用 SRP 方法向 Cognito 用户池服务进行身份验证;在该对话框中处理潜在的挑战(设备 ID、必须更改密码、两个因素等)。最后,我有一系列令牌,允许程序使用带有用户凭证的 AWS 服务。

现在,我需要客户端应用程序与自定义服务器端应用程序进行通信。客户端必须向服务器应用程序证明其身份,然后服务器应用程序将与更多 AWS 服务进行通信。在这里,我有两个不同的用例:

1)服务器只需要知道客户端认证的用户是谁(以安全的方式,但不冒充用户)。

2)客户端需要将用户的部分或全部权限委托给服务器;然后,服务器将代表该用户对 AWS 服务执行一些操作。

服务器端应用程序很可能是用 Java 开发的,在 EC2 机器上运行。我只对通过 Cognito 用户池源的用户身份验证感兴趣(也就是说,我对基于 Facebook/Google/OpenID 的身份验证流程不感兴趣)。

以非常不安全的方式实现这两个目标似乎相当容易:只需让客户端应用程序将其已授予的所有令牌发送到服务器即可。但这显然不是要走的路。

然而,我很难从 Cognito 用户池/Cognito 身份池/IAM/STS 文档中弄清楚如何正确实现这一点。例如,我希望客户端应用程序能够生成某种“委托令牌”,可以将其传递给服务器;然后,服务器应该能够验证该令牌并从中提取身份信息(满足 #1),或者模拟与令牌对应的身份以执行对 AWS 服务的调用(满足 #2)。还是我想错了?

0 投票
1 回答
384 浏览

amazon-web-services - AWS STS 承担角色 - 我是否必须提供访问和密钥?

我正在使用亚马逊 Javascript SDK。

我正在尝试了解 AWS STS api 以获取访问 S3 的临时凭证。但我发现,如果我提供访问密钥和密钥,那么只有它才会给我会话令牌。否则它会抛出错误“配置中缺少凭据”。

这就是 STS 的工作方式吗?我不想在 javascript 中显示密钥。

0 投票
0 回答
468 浏览

node.js - 在开发环境中将 SQS 与 MFA 和临时 STS 凭据一起使用

我正在尝试使用来自 node.js 应用程序的 MFA 保护的 SQS 队列。

代码如下所示:

所以我称这个过程为

但是,我收到以下错误:

虽然令牌是新鲜的。

我也尝试过AWS.config.update传递accessKeyId,secretAccessKeysessionToken. 但是,代码甚至没有达到这一点。

0 投票
1 回答
820 浏览

amazon-web-services - 我可以通过另一个 aws 账户发布的 AWS IAM 角色获取凭证吗?

不幸的是,我为此工作损失了几天。

如何通过 IAM 角色获取临时凭证?这可能吗?

这是我的场景和代码。(Java 上的 AWS 开发工具包)

  • 通过 AWS 账户 accessKey 和 secretKey 的 STS 实例

    /li>
  • 进行 AssumeRoleRequest

    /li>
  • 获取 SessionCredentials

    /li>
  • 工作

    /li>

它抛出AWSSecurityTokenServiceException

我制定这样的政策。附加到 IAM 角色和 IAM 用户。

编辑:

我使用 IAM Policy Simulator 测试了策略(已修改)。选择- 它允许AWS Security Token Service-AssumeRoleIAM Role ARN

0 投票
1 回答
418 浏览

file-upload - 使用临时凭证给出 SignatureDoesNotMatch 问题

我们正在使用 EvaporateJS 处理基于 s3 浏览器的多部分文件,使用带有临时凭证的预签名 URL。

以下将是我的配置

但我收到以下签名不匹配错误。

AWS 代码:SignatureDoesNotMatch,消息:我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。状态:403

以下将是日志

请帮我解决签名不匹配的问题。

0 投票
1 回答
3771 浏览

amazon-web-services - (使用 CLI)AWS 无法验证提供的访问凭证

执行 aws cli 命令时出现以下错误aws ec2 describe-instances --filters "Name=instance-type,Values=m1.small"

凭据来自以下脚本:

我还测试了对角色启用管理员访问权限。还是行不通。

角色的信任关系如下: