AWS:Cognito 与 API Gateway 中的 Beta HTTP API 集成?

Mic*_*ael 7 amazon-web-services amazon-cognito aws-api-gateway

亚马逊网络服务在上个月初在 API Gateway 上推出了HTTP API的测试版作为新产品。它的身份验证是使用 JSON Web Tokens 管理的,并配置了一个表单要求

  1. “授权人姓名”
  2. “身份源……定义令牌源的选择表达式”
  3. “发行人网址”

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

小智 19

为此,AWS 正在使用JWT Bearer Grant此处为规范草案。

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

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

尝试使用这些值。

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

祝你好运!

欢呼,
公羊

  • 我可以按照您提供的格式构建 URL。但是,我在哪里可以找到“我的 Cognito 用户池的元数据 URL”?我翻遍了我的 AWS Cognito 控制台页面,但找不到它。这让我疯狂。 (3认同)

Vla*_*nko 7

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

1.授权人姓名

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

例子 : xxxxxx_app_clientWeb

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

3.发行人网址

  • 构造 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

  • 打开 URL,你会看到一个 json
  • 取“发行人”的价值

例子 :

"issuer":"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_FcgSrx2141"
Run Code Online (Sandbox Code Playgroud)

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

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

ID 9sptej55gii5dfp08ulplc343
Run Code Online (Sandbox Code Playgroud)

拿: 9sptej55gii5dfp08ulplc343