【问题标题】:How a mobile app should authenticate to AWS移动应用程序应如何向 AWS 进行身份验证
【发布时间】:2019-08-31 11:16:18
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: amazon-web-services amazon-cognito amazon-iam


    【解决方案1】:

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

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

    【讨论】:

    • 我对使用情况的统计不感兴趣。 “向事件添加触发器”是什么意思?
    • 这意味着添加一个 lambda,该 lambda 将在发生 cognito 事件时触发,例如当有人登录时,或者在您的情况下只是使用您未经身份验证的身份。您现在可能不需要这些功能,但我会选择 cognito,因为它是为您的用例设计的。
    猜你喜欢
    • 2017-02-07
    • 2015-11-22
    • 2017-01-10
    • 1970-01-01
    • 2011-06-01
    • 2022-07-31
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多