授权标头中没有有效的键=值对(缺少等号)

时间:2019-03-30 06:10:14

标签: web-services authentication post oauth postman

从Postman命中API时,出现此错误。

API详细信息:

URL:

https://account-perf.myglobal.com/v1/users/00uk0khprrME7gZOU0h7/credentials/change_password

标题:

Content-Type:application / json
授权:承担者n7mbkw74jsubd7rauhptdnre

类型:

开机自检

身体:

{“密码”:“ Baddy125 @”,“令牌”:“ eyJhbGci ....”}


编辑1:

Web服务调用以生成令牌-

URL-

https://api-perf.myglobal.com/rest/oauth2/v1/token

类型-

开机自检

身体-

client_id:abcd
client_secret:xyz
grant_type:client_credentials

3 个答案:

答案 0 :(得分:3)

每当调用任何未处理的端点方法或资源时,我都会遇到此问题。我的设置是一个API网关,该网关具有已定义的资源(例如/myendpoint)和用于这些端点的已定义方法(例如GET)。

要修复此问题,我创建了一个Node.js Lambda函数,该函数只返回了404。然后在端点ANY的根目录添加了任何/方法,并将其指向Lambda代理函数。到任何方法。

然后我添加了代理资源,例如/{proxy}-创建资源以告诉代理时,您可以单击一个复选框。在该资源上有一个指向相同Lambda函数的ANY方法,部署了API,就可以了。

现在,我得到了一个正确的HTTP 404错误,而不是auth承载令牌错误。

答案 1 :(得分:1)

分析并验证请求路径,如果请求不正确,则会在API Gateway上引发此错误。在纠正了请求参数后,它又很好地解决了我的错误。

让我知道。

答案 2 :(得分:0)

@Matt H - 这是个好主意,它给了我另一个灵感。

假设 API 中的所有其他路径都已明确指定,我创建了一个默认路径 /{proxy+},它将返回 http 404,未找到消息资源。我没有使用 lambda,而是创建了一个模拟响应,因此让 Lambda 返回响应甚至不会产生任何成本。

我通过 Open API 规范创建了我的 API。这就是我的 YAML 实现方式

  /{proxy+}:
    x-amazon-apigateway-any-method:
      responses:
        404:
          description: "404 response"
          content: {}
      x-amazon-apigateway-integration:
        responses:
          404:
            statusCode: "404"
            responseTemplates:
              application/json: "{\"message\":\"resource not available\"}"
        requestTemplates:
          application/json: "{\"statusCode\": 404}"
        passthroughBehavior: "when_no_templates"
        type: "mock"

Serverless 还能够指定内联模拟响应。下面可以是一个示例:

functions:
  default:
    handler: handler.default
    events:
      - http:
          path: hello
          cors: true
          method: get
          integration: mock
          request:
            template:
              application/json: '{"statusCode": 404}'
          response:
            template: $input.path('$')
            statusCodes:
              404:
                pattern: '' #default method
                template:
                  application/json: '{"statusCode": 404, "message":"resource not found"}'

无服务器文档:https://www.serverless.com/framework/docs/providers/aws/events/apigateway/#custom-response-templates