我想在浏览器中使用AWS SDK for JavaScript创建一个客户端(无服务器)应用程序。该工具的所有预期用户都有独立的IAM用户,并可以访问AWS Web控制台。
我希望所有API调用都在各个IAM用户的上下文中执行,因此它们受每个用户的单独权限的约束,这样我就可以看到谁在CloudTrail中做了什么。
由于任何类型的浏览器本地存储都不应该被持久凭据信任,我不能简单地让用户输入一次他的秘密访问密钥并保存它
然而,我想我可以在每个会话开始时请求用户的访问密钥id和秘密访问密钥,然后用它调用STS GetSessionToken
,并且只将生成的临时安全凭据存储在会话存储中,并将其用于以下所有SDK使用。
当然,对于用户来说,使用IAM用户和密码登录会更好,而不是使用长而神秘的访问密钥(想想移动设备…)。
IAM用户是否有任何联合登录选项(将他们重定向到AWS IAM登录页面),或使用用户名和密码调用STS API的方法?
理想情况下,您想要的是通过IAM用户/密码组合登录。据我所知(也看到这一点),没有标准的方法来做到这一点。
在我的一个项目中,我使用HTTP客户端模拟了在线登录。如果你能用它获得会话令牌,那对你来说就行了。但它不支持MFA,并且依赖于AWS身份验证实现的内部,该实现可能会在没有警告的情况下发生变化。