【问题标题】:Design of apigw authentication/authorization with cognito token使用 cognito 令牌的 apigw 认证/授权设计
【发布时间】:2021-10-25 15:36:41
【问题描述】:

我真的很难找到一种允许我使用的 AWS 设计:

  • 使用 REST(不使用 AWS sdk 库)对实体进行身份验证
  • cognito的rest api需要识别实体并根据它返回结果。例如,像“getOrders”这样的 api 将返回与已登录的实体关联的订单。

评估解决方案:

  • 具有范围的oAuth 身份验证无法解决这种情况。该实体必须使用 appclientId 和 secret 进行身份验证,因此不清楚如何区分实体(为所有可以登录的实体创建 appclient 对我来说没有意义)。实际上,这里所有实体都可以调用相同的 api,但结果取决于身份本身而不是范围。尽管如此,通过这种设计,如何使用rest api获取令牌是很清楚的。

  • 使用与实体关联的用户名和密码进行身份验证。这样,就可以在apigw上识别实体,并按预期返回结果。在这种情况下,不清楚如何使用 rest api(而不是使用 aws 的 sdk)获取令牌。我无论如何都找到了这篇文章:What is the REST (or CLI) API for logging in to Amazon Cognito user pools

我在这里错过了其他一些最佳选择吗?在我看来,这是一个非常常见的情况,但我找不到合适的解决方案。 您能否建议应该使用哪种身份验证机制。

提前致谢 马可

【问题讨论】:

    标签: rest aws-api-gateway amazon-cognito


    【解决方案1】:

    Cognito 公开标准 HTTPS 端点,允许您绕过 AWS API 执行登录和代码到令牌交换。它作为托管 UI 的一部分提供。所有请求都将针对您托管的 UI 域执行。有六个可用端点:

    1. /login 这是您触发唱歌的地方。您的用户最终将访问您托管的 UI 页面 (documentation)。

    2. /logout 关闭托管 UI 端的会话 (documentation)。

    3. /oauth2/authorize 用于通常在 Web 浏览器中获取 JWT 令牌 (documentation)。

    4. /oauth2/token 与上述类似,但仅用于后端(documentation)。

    5. /oauth2/userInfo 用于获取认证用户的信息(documentation)。

    6. /oauth2/revoke 用于使提供的令牌 (documentation) 无效。

    使用上述端点,您可以实现整个登录/注销流程,而无需使用 AWS API。

    【讨论】:

      猜你喜欢
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多