【发布时间】:2019-01-14 11:17:40
【问题描述】:
我需要以查询参数(例如http://example.com?BASIC_AUTH=dXNlcjpwYXNz)的形式向 nginx 发送一些基本的身份验证凭据(例如 user:pass),并能够以更常见的 Authorization: Basic dXNlcjpwYXNz 标头形式将它们转发到代理后面的目标服务器。
我已经能够使用正则表达式检索编码的身份验证字符串的值。问题是该值通常可能包含一些需要在 URL 中进行百分比编码的字符。埃斯。 user:pass! -> ?BASIC_AUTH=dXNlcjpwYXNzIQ== 变为 ?BASIC_AUTH=dXNlcjpwYXNzIQ%3D%3D
因此,当我将请求转发到目标服务器时,我最终指定了目标服务器将拒绝的 Authorization: Basic dXNlcjpwYXNzIQ%3D%3D,并给出 401 Unauthorized。
如何在设置 Authorization 标头之前强制 nginx 解码 auth 字符串?提前感谢您的帮助。
注意:由于某些特定于应用程序的限制,我首先无法在 Authorization 标头中发送 auth 字符串。
【问题讨论】:
标签: nginx basic-authentication urlencode url-encoding