【问题标题】:How to change Kong realm name如何更改Kong域名
【发布时间】:2022-11-16 23:53:19
【问题描述】:

任何 Kong 身份验证插件(key-auth、basic-auth)都会生成一个带有 realm="kong" 的响应标头“www-authenticate”。 有没有办法将 realm 的值更改为不指示我正在使用哪个 API 网关的值?

我阅读了身份验证插件的文档,但没有配置值。

【问题讨论】:

    标签: kong kong-plugin


    【解决方案1】:

    我阅读了身份验证插件的文档,但没有配置值。

    WWW-Authenticate 标头被发送到客户端以符合 section-4.1 of RFC 7235 指定 A server generating a 401 (Unauthorized) response MUST send a WWW-Authenticate header field containing at least one challenge. 它是在源代码上实现的 here

    但是,由于标头是 Kong 在 401 响应(请求未传递到上游服务器)的情况下的响应,因此可以毫无问题地更改标头。

    您可以使用配置为 config.replace.headers=WWW-Authenticate:<value>response transformer 插件来更改标头的值。

    否则,可以使用config.remove.headers=WWW-Authenticate的配置来彻底去除header。

    【讨论】:

    • 感谢您的详细解释。我知道我可以使用响应转换器插件,我已经将它用于某些路由。但是,我一直在寻找一个更优雅的解决方案 - 全局或至少直接在 auth 插件配置中的一些配置值。而且我不喜欢让每个请求都通过该插件只是为了删除标头的想法。我决定直接在 meta.lua 中修补值。
    • 是的......如果你想在没有插件的情况下删除返回的标头,摆弄Kong源代码可能是最好的解决方案。您是否考虑过创建自己的插件并将其加载到 Kong 中?可能会直接解决你的问题。
    【解决方案2】:

    因为自己构建了自己的docker镜像,所以决定直接在源码中patch这个值。对于任何感兴趣的人,这是 Dockerfile 中的行:

    RUN cd / && find . -name "meta.lua" 2>/dev/null | xargs sed -i.lua 's/_NAME = "kong"/_NAME = "<my-own-realm-name>"/g'
    

    该命令搜索 meta.lua 文件并替换 _NAME 变量的值。也许它可以更优雅,但它符合我的需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2019-10-09
      • 2015-01-10
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2020-12-06
      相关资源
      最近更新 更多