首页 > 解决方案 > 移动应用程序应如何向 AWS 进行身份验证

问题描述

我正在开发一个必须访问某些 AWS 资源的移动应用程序,因此它需要对 AWS 端点进行身份验证。该应用程序不管理用户(登录、注销、注册等)。

我的第一个解决方案是创建一个专用于移动应用程序的 IAM 用户,并将其凭证嵌入到移动应用程序代码中。该应用程序使用嵌入式凭证向 AWS 验证自身。它可以工作,但 AWS 建议避免将凭证直接嵌入应用程序中。

我认为更好的解决方案是 Cognito。因为我不需要用户管理,所以我应该使用未经身份验证的(访客)身份来请求临时 AWS 凭证。

但是我不明白为什么访客Cognito 身份比嵌入式凭据更安全。移动应用程序通过发送 Cognito 身份池 ID(即嵌入在移动应用程序中的长期“数字”)来接收临时 AWS 凭证。如果有人能够找到此身份池 ID,她可以接收 AWS 凭证并作为我的官方移动应用程序访问 AWS 资源。嵌入式 AWS 长期凭证和色调 Cognito 访问之间似乎没有区别。

为什么 Cognito 解决方案优于嵌入式 AWS 凭证?

标签: amazon-web-servicesamazon-cognitoamazon-iam

解决方案


如果您使用身份池创建未经身份验证的访问,则表示您允许公众访问您的 AWS 资源。确保您仔细编写策略,就安全性而言,您使用单个 IAM 用户或 cognito 未经身份验证的访问并不重要。

使用联合身份将为您带来好处,例如获取使用情况统计信息和向事件添加触发器。还请记住,创建单个 IAM 用户然后允许多人使用这些凭证是一种“黑客”方式,可以执行 cognito 联合未经身份验证的身份旨在执行的操作。如果 AWS 决定限制 IAM 的这种行为,您以后可能会遇到意想不到的复杂情况。


推荐阅读