【发布时间】:2022-11-16 23:53:19
【问题描述】:
任何 Kong 身份验证插件(key-auth、basic-auth)都会生成一个带有 realm="kong" 的响应标头“www-authenticate”。 有没有办法将 realm 的值更改为不指示我正在使用哪个 API 网关的值?
我阅读了身份验证插件的文档,但没有配置值。
【问题讨论】:
标签: kong kong-plugin
任何 Kong 身份验证插件(key-auth、basic-auth)都会生成一个带有 realm="kong" 的响应标头“www-authenticate”。 有没有办法将 realm 的值更改为不指示我正在使用哪个 API 网关的值?
我阅读了身份验证插件的文档,但没有配置值。
【问题讨论】:
标签: kong kong-plugin
我阅读了身份验证插件的文档,但没有配置值。
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。
【讨论】:
因为自己构建了自己的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 变量的值。也许它可以更优雅,但它符合我的需要。
【讨论】: