【问题标题】:AWS Cognito - IAM - Deny all access to public/unauth users - FederatedAWS Cognito - IAM - 拒绝对公共/未授权用户的所有访问 - 联合
【发布时间】:2017-09-11 02:18:45
【问题描述】:

我有一个 Web 应用程序,使用 cognito 连接到后端,所有这些都在 aws 服务中。有一个公共 api 方法 (Lambda),它调用 cognito 进行身份验证并从后端返回会话令牌等,问题是任何人都可以直接从 web 访问 cognito api(连接到 aws api直接),我不希望这样......我如何定义一个策略,以便不授予用户对 cognito 的公共访问权限?

当然是知道我的用户池/认知 id 的用户

TIA

【问题讨论】:

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


    【解决方案1】:

    可能有几种方法可以解决这个问题。以下是我想到的三个想法。

    • Cognito 联合身份将两个角色链接到您的身份池,一个用于未经身份验证的用户,一个用于经过身份验证的用户。您可以不授予 unauth 角色任何权限,只允许人们在使用某些提供商(例如 Facebook)登录后才能访问它。
    • 您可以将 Lambda 放在 API Gateway 后面,然后使用联合身份保护对它的访问(使用上述策略)。
    • 最后,您还可以使用 Cognito 用户池对 API Gateway 进行身份验证。 API Gateway 与用户池紧密集成,因此您只需登录并提供返回的登录令牌之一进行身份验证。

    【讨论】:

    • 谢谢,我试图拒绝以 unauth 角色访问所有服务,但无论如何我可以从 web sdk 调用 Credentials... 方法...我应该更改信任关系吗?我尝试更改策略,因为我不确定要更改信任关系中的哪些内容。 (还尝试拒绝对 auth 角色的所有操作,只是想看看这是否有效,但没有)
    • Cognito 使用的角色定义了您获得的凭据可以做什么,因此它们仅在您获得它们之后才适用。所以,他们不能阻止你得到他们。做到这一点的唯一方法是从您不希望某人获得凭据的部分中删除 Cognito。
    • 拒绝一切只是意味着他们获得的凭据是无用的。
    猜你喜欢
    • 2018-07-30
    • 2017-03-14
    • 2020-04-05
    • 1970-01-01
    • 2016-09-29
    • 2018-09-21
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多