设置授权后,Express-Gateway响应错误

时间:2017-08-06 16:40:36

标签: node.js express microservices express-gateway

我在尝试在请求标头中设置授权密钥(key-auth)时收到错误404。我确定我的密钥没有任何问题,因为如果我没有设置它,则会返回Forbidden状态。

设置任何凭据前

$ curl http://localhost:8080/ip

将返回:

{
  "origin": "5.116.28.133"
}
创建密钥身份验证凭据后

$ curl -H "Authorization: apiKey ${keyId}:${keySecret}" http://localhost:8080/ip

将返回:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /ip</pre>
</body>
</html>

,这是我的网关配置:

http:
  port: 8080
admin:
  port: 9876
  hostname: localhost
apiEndpoints:
  api:
    host: localhost
    paths: '/ip'
serviceEndpoints:
  httpbin:
    url: 'https://httpbin.org'
policies:
  - basic-auth
  - cors
  - expression
  - key-auth
  - log
  - oauth2
  - proxy
  - rate-limit
pipelines:
  - name: default
    apiEndpoints:
      - api
    policies:
    - key-auth:
      - proxy:
          - action:
              serviceEndpoint: httpbin 
              changeOrigin: true

有谁知道为什么会出现这个问题?

http://www.express-gateway.io/

中查找有关express-gateway的更多信息

2 个答案:

答案 0 :(得分:3)

它应该是key-auth 问题是缩进

- key-auth:
       - proxy:

它必须在一个层面上

基本上这是一个数组:

policies: [{
    'key-auth':null
    },{
    proxy:{ ... }   
}]

这将解决问题。

答案 1 :(得分:0)

尝试从配置文件中<body>下的key-auth删除连字符 - 这对我有用。它应该是policies: