$remote_passwd

$remote_passwd 返回 Basic HTTP 身份验证 中 'Authorization' 头的解码后密码。 — NGINX CoolKit Module

$remote_passwd NGINX CoolKit Module

说明

$remote_passwd 变量是 NGINX CoolKit 模块的一部分,在处理 Basic HTTP 身份验证 时起着关键作用。具体来说,当客户端以用户名和密码进行认证时,它会从 HTTP 请求的 'Authorization' 头中提取解码后的密码。当客户端发送认证请求时,用户名和密码通常会进行 base64 编码,并以 'Authorization: Basic base64(username:password)' 的格式发送。NGINX 在 CoolKit 模块的帮助下会解码这些信息,以便后续处理可以使用该密码。 该变量在处理包含 'Authorization' 头的 HTTP 请求时被设置。如果该头不存在,或者不符合 Basic 身份验证 的预期格式,则 $remote_passwd 的值将为空。因此,在授权和身份验证很重要的安全应用中,必须谨慎使用该变量,确保在使用密码参与任何逻辑之前先检查是否存在有效凭据。 在实际应用中,$remote_passwd 在与需要用户名/密码验证的后端数据库或服务进行身份验证时可能是关键数据,模块文档中的示例配置对此有说明。

配置示例

location = /auth {
    internal;
    set_quote_sql_str  $user $remote_user;
    set_quote_sql_str  $pass $remote_passwd;
    postgres_pass      database;
    postgres_query     "SELECT login FROM users WHERE login=$user AND pass=$pass";
    postgres_rewrite   no_rows 403;
    postgres_output    none;
}

子系统

http

可缓存

上下文

http, server, location

确保你的 Web 服务器已正确配置以处理基本认证,否则缺失的请求头可能导致 $remote_passwd 为空。

在内部逻辑中使用时要谨慎,以避免潜在的安全问题。未编码的密码不应被记录或不当暴露。

根据配置,上游代理可能会剥离 Authorization 头,导致变量为空。