1

对于我的网站,我想实现 APIMAN 和 keycloak 作为解决方案,所以我想出了这个架构:

  • Keycloak 作为身份验证提供程序。
  • Apiman 作为 API 管理器
  • Nginx 作为反向代理

Apiman 设置在Keycloak 安全代理后面,用于检查用户是否通过此配置进行了身份验证:

{
  "target-url": "APIMAN_API_ENDPOINT_URL",
  "send-access-token": true,
  "bind-address": "0.0.0.0", // this is because I'm in a docker container
  "http-port": "8999",
  "applications": [{
    "base-path": "/",
    "adapter-config": {
      // HERE ARE MY ADAPTER CONFIGURATION
    },
    "constraints": [{
      "pattern": "/*",
      "roles-allowed": [
        "CUSTOM ROLE"
      ]
    }]
  }]
}

在我按照本文档尝试实施 Keycloak Oauth 插件之前,一切正常。配置后,我一直返回相同的消息:

{"type":"Authentication","failureCode":11005,"responseCode":401,"message":"OAuth2 'Authorization' 标头或 'access_token' 查询参数必须提供。","headers":{"entries ":[],"空":true}}

我已经被困在这里两天了,不知道如何解决这个问题。任何帮助,将不胜感激。

4

1 回答 1

0

此错误消息告诉您您的 HTTP API 请求不包含AuthorizationHTTP 标头或access_tokenHTTP 查询参数。

您需要从 Keycloak 获取 JWT,然后通过 header 或查询参数传递它。


您还可以检查您的策略链中是否只有一个Keycloak OAuth 策略实例。

于 2017-08-16T11:03:24.680 回答