Amazon web services 移动应用程序应如何通过AWS认证

Amazon web services 移动应用程序应如何通过AWS认证,amazon-web-services,amazon-cognito,amazon-iam,Amazon Web Services,Amazon Cognito,Amazon Iam,我正在开发一个移动应用程序,它必须访问一些AWS资源,因此需要对AWS端点进行身份验证。该应用程序不管理用户(登录、注销、注册等) 我的第一个解决方案是创建一个专用于移动应用程序的IAM用户,并将其凭据嵌入移动应用程序代码中。应用程序使用嵌入的凭据向AWS进行身份验证。不过,AWS建议避免将凭证直接嵌入应用程序中 我认为更好的解决方案是Cognito。因为我不需要用户管理,所以我应该使用未经验证的(来宾)身份来请求临时AWS凭据 然而,我不明白为什么来宾Cognito身份比嵌入式凭证更安全。移动

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

我的第一个解决方案是创建一个专用于移动应用程序的IAM用户,并将其凭据嵌入移动应用程序代码中。应用程序使用嵌入的凭据向AWS进行身份验证。不过,AWS建议避免将凭证直接嵌入应用程序中

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

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


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

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


使用联邦身份将为您提供一些好处,如获取使用情况的统计信息和向事件添加触发器。还请记住,创建一个IAM用户,然后允许多人使用这些凭证是cognito federated unauthenticated idenity设计的一种“黑客”方式。如果AWS决定限制IAM的这种行为,您以后可能会遇到意想不到的复杂情况

我对使用率的统计数据不感兴趣。“向事件添加触发器”是什么意思?它意味着添加一个lambda,当cognito事件发生时(如有人登录时)将触发,或者在您的情况下,仅使用未经验证的身份。您现在可能不需要这些特性,但我选择cognito只是因为它是为您的用例设计的。