【问题标题】:AWS: Cognito integration with a beta HTTP API in API Gateway?AWS:Cognito 与 API Gateway 中的测试版 HTTP API 集成?
【发布时间】:2020-04-23 02:08:10
【问题描述】:

Amazon Web Services 上月初在 API Gateway 上推出了 HTTP API 的测试版作为新产品。它的身份验证使用 JSON Web Tokens 进行管理,并配置了 with a form 请求

  1. “授权人姓名”
  2. “Identity Source...定义令牌来源的选择表达式”
  3. “发行者 URL”

我对身份验证协议或这些表单字段的要求不是很熟悉,目前 AWS 关于如何配置它以与 Cognito 一起使用的文档是 sparse。由于我缺乏经验,我在没有指导的情况下配置它并不完全舒服。另一个 Stack Overflow 用户似乎有a similar issue,但没有得到答复。

【问题讨论】:

    标签: amazon-web-services aws-api-gateway amazon-cognito


    【解决方案1】:

    AWS 正在为此目的使用 JWT Bearer Grant。 规范草案here

    它允许 HTTP API 网关在传入的 Authorization HTTP 标头中接受 JWT 令牌,该标头包含由第三方授权服务器(如 Cognito)颁发的自包含 JWT 访问令牌 、Azure AD 等)。

    API 网关通过将“iss”值与颁发者 URL 匹配来验证传入的 JWT 令牌,以查看它是否可以信任此令牌。

    尝试使用这些值。

    • 授权人姓名:在您的 Cognito 用户池中注册的客户名称
    • 身份来源:将其保留为默认值,$request.header.Authorization
    • Issuer URL:检查您的 Cognito 用户池的元数据 URL(以这种格式构造 URL:: https://cognito-idp.[region].amazonaws.com/[userPoolId]/.well-known/openid -configuration :: 查找名为 “issuer” 的声明。复制其值并将其粘贴到此处。
    • 受众:您在 Cognito 中注册的客户的客户 ID

    祝你好运!

    干杯,
    内存

    【讨论】:

    • 我可以按照您提供的格式构建 URL。但是,我在哪里可以找到“我的 Cognito 用户池的元数据 URL”?我浏览了我的 AWS Cognito 控制台页面,但找不到它。快把我逼疯了。
    【解决方案2】:

    使用@ram 回答通过,并且能够实现这一点

    1.授权人姓名

    AWS Cognito > 用户池 > 应用集成 > 应用客户端设置 > 应用客户端:

    例如:xxxxxx_app_clientWeb

    2.身份来源$request.header.Authorization

    3.Issuer URL

    • 构造 URL 以获取 Cognito 用户池元数据 (https://cognito-idp..amazonaws.com//.well-known/openid-configuration) 示例:

    https://cognito-idp.us-east-1.amazonaws.com/us-east-1_FcgSrx2141/.well-known/openid-configuration

    • 打开网址,你会看到一个json
    • 取“发行人”值

    例子:

    "issuer":"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_FcgSrx2141"
    

    收:https://cognito-idp.us-east-1.amazonaws.com/us-east-1_FcgSrx2141

    4.受众: AWS Cognito > 用户池 > 应用集成 > 应用客户端设置 > 应用客户端 ID 示例:

    ID 9sptej55gii5dfp08ulplc343
    

    取:9sptej55gii5dfp08ulplc343

    【讨论】:

      【解决方案3】:

      这个视频解释了整个过程和配置。

      https://www.coursera.org/lecture/building-modern-java-applications-on-aws/use-amazon-cognito-to-sign-in-and-call-api-gateway-s226R

      感谢视频是公开的。

      注意:(据我所知)该课程来自 AWS,但通过不同的 MOOC 网站(不仅仅是这个)向公众提供。


      一旦您阅读和玩够了,您将开始看到细节中的宝石。

      例如Token,在很多文档中都有提到,但它可以是Access / Id / Refresh Token。如果您没有意识到这一点,您可能会浪费您的时间。

      例如,“隐式授权”不提供刷新令牌,因此您无法更新您的访问令牌并且尝试这样做是无用的。

      【讨论】:

        猜你喜欢
        • 2020-04-22
        • 2019-06-22
        • 2020-11-20
        • 1970-01-01
        • 2021-06-10
        • 2017-04-28
        • 2019-05-09
        • 2021-03-26
        • 2017-04-27
        相关资源
        最近更新 更多