【问题标题】:Express-Gateway response error after setting authorization设置授权后 Express-Gateway 响应错误
【发布时间】:2018-01-14 00:18:13
【问题描述】:

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

在设置任何凭据之前:

$ 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 的更多信息

【问题讨论】:

  • 你在哪里处理节点中的标题,那里可能有一些错误?或者流量没有到达那里?
  • @Aky_0788 我什么都不处理。这一切都在express-gateway.io 中处理,如果您看到他们的示例,他们会在标头中设置凭据,任何使用授权密钥都没有任何问题。

标签: node.js express microservices express-gateway


【解决方案1】:

应该是key-auth 问题在于缩进

- key-auth:
       - proxy:

它必须在一个层次上

基本上这是一个数组:

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

这将解决问题。

【讨论】:

  • 同样的问题,从入门演示中取消注释行将无法提供正确的缩进!偷偷摸摸的问题。很好的收获谢尔盖库茨
【解决方案2】:

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

【讨论】:

  • [Currently] 从 key-auth 中删除连字符会导致配置错误。也许这是过去的无声错误,破坏了身份验证并允许请求?
猜你喜欢
  • 1970-01-01
  • 2021-03-23
  • 2018-02-21
  • 2020-08-30
  • 2021-01-20
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
相关资源
最近更新 更多