【问题标题】:How to configure my Serverless YML to use my API Gateway Authorizer?如何配置我的无服务器 YML 以使用我的 API 网关授权器?
【发布时间】:2019-07-10 12:48:54
【问题描述】:

我正在关注this 教程,使用 Cognito 授权通过 API 网关访问我的 lambda 函数。

我已经使用经过验证的用户、API 网关授权方和 lambda 函数创建了我的用户池,用于登录并获取令牌 ID。

当我使用我的 lambda 函数获取令牌 ID 并在 AWS 控制台中对其进行测试时,授权方返回 200,所以我认为它正在工作,但是当我尝试将令牌发送到我的 lambda 函数时,它返回“401 Unauthorized”

我的 YML 配置:

teste:
  handler: handler.teste
  memorySize: 128
  events:
    - http:
        path: teste
        method: get
        authorizer:
          name: api-authorizer
          arn: arn:aws:cognito-idp:XXXXXXXXX:XXXXXXXXXX:userpool/XXXXXXX_XXXXXXX
          type: token

编辑

我查看了 AWS 控制台,我的 lambda 函数和 API 网关触发器如何具有以下详细信息:

Autorização: COGNITO_USER_POOLS
Caminho do recurso: /teste
Endpoint de API: https://XXXXXXXXX.execute-api.XXXXXXXXX.amazonaws.com/dev/teste
Estágio: dev
Método: GET

编辑 2

我还发现我的无服务器版本是 1.47,它看起来是最新的,尽管我在 Stack 上阅读了一些问题,他们说无服务器在 1.5 中

【问题讨论】:

  • 当你定义一个 Authorizer 时,它会要求用户定义一个标头,该标头将与令牌一起传递。您要发送此标头吗?可以分享执行 API 调用的客户端代码吗?
  • 我正在使用 Postman 发送我的请求并添加此标头:x-api-token,在 API Gateway Authorizer 测试中指示。那个对吗?
  • 该标头的值是多少?我想了解的是您如何获得此令牌。因此,我的意思是客户端代码:您目前如何针对 cognito 进行身份验证?在授权者本身中,有一个 Token Source 属性,您可以自己定义它。通常,人们坚持使用Authorization。通过身份验证后,您需要获取从 Cognito 发送的令牌并将其传递给您定义的标头。
  • 我的授权器不是 lambda 函数,它实际上是在 AWS 控制台 > API Gateway > 授权器 > 创建新授权器中创建的。它会影响什么吗?
  • 我正在使用 lambda 函数登录到 cognito 并向我发送令牌。这个函数是我在自己的问题中给出的答案:stackoverflow.com/questions/56937337/…

标签: aws-lambda aws-api-gateway serverless-framework


【解决方案1】:

我读了几遍this 页面,我意识到我没有使用正确的方法,所以我将我的 YML 代码更改为:

  functions:
teste:
  handler: handler.teste
  memorySize: 128
  events:
    - http:
        path: teste
        method: get
        type: COGNITO_USER_POOLS
        authorizer:
          arn: arn:aws:cognito-idp:XXXXXXXX:XXXXXXXXX:userpool/XXXXXXXX_XXXXXXXXX
          authorizerId:
            Ref: api-authorizer

我还将我的授权来源更改为授权。

【讨论】:

    猜你喜欢
    • 2017-08-09
    • 2017-11-30
    • 1970-01-01
    • 2019-11-27
    • 2015-01-23
    • 2015-08-26
    • 2016-08-12
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多