提供授权人arn的无服务器功能返回401

时间:2019-07-10 15:40:20

标签: serverless-framework serverless aws-serverless

我正在使用无服务器。

当我在客户端上设置以下其中一项功能(包括授权者)时,会收到401。

但是,当我删除它时,没有任何问题。

provider:
  name: aws
  runtime: nodejs8.10
  region: eu-west-1
  environment:
    USER_POOL_ARN: "arn:aws:cognito-idp:eu-west-1:974280.....:userpool/eu-west-1........"

functions:
  create:
    handler: handlers/create.main
    events:
      - http:
          path: create
          method: post
          cors: true
          authorizer:
            type: COGNITO_USER_POOLS
            name: serviceBAuthFunc
            arn: ${self:provider.environment.USER_POOL_ARN}

在客户端上,我希望同一用户池的登录用户可以得到预期的响应。但是,它返回401。

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

经过数小时的拼搏,我提出了解决方案。

对于遇到相同问题的任何人,这都是对我有用的解决方案。


  1. integration: lambda之后添加cors: true (尽管顺序无关紧要)。

下面只是演示了这一点。

functions:
  create:
    handler: handlers/create.main
    events:
      - http:
          path: create
          method: post
          cors: true
          integration: lambda   // this solves the problem
          authorizer:
            type: COGNITO_USER_POOLS
            name: serviceBAuthFunc
            arn: ${self:provider.environment.USER_POOL_ARN}

  1. 在发出请求时,向Authorization标头发送Auth.currentSession()。idToken.jwtToken值。

以下是使用API的{​​{1}}和@aws-amplify/api的{​​{1}}发送标头的示例。

Auth