auth_hash_message
定义用于 NGINX 的安全链接认证中要被哈希的消息。
Secure link hash authentication
·
httpserverlocation
语法auth_hash_message string;
默认值none
上下文http, server, location
参数1
说明
auth_hash_message 指令是 NGINX 中 Secure Link Hash 模块的重要组成部分,该模块通过允许配置将被哈希以生成安全令牌的自定义消息来增强安全链接功能。通过指定此指令,用户可以定义请求的哪些部分会参与生成安全令牌,访问受保护资源时会对该令牌进行验证。该消息通常将请求 URI、时间戳或其他动态参数与由 auth_hash_secret 指令定义的密钥组合在一起。该安全令牌有助于确保链接在定义的时间后过期,并可根据需要包含过期范围。
要设置此指令,需要将引用消息各部分的复杂变量作为其参数传递。该变量可能包含 NGINX 变量(例如 $uri、请求参数或自定义变量),这些变量可以连接成形成哈希基础的字符串。当发出请求时,NGINX 使用由 auth_hash_message 定义的完整消息计算哈希,将其与提供的令牌进行验证,并检查其他条件,例如由 auth_hash_check_time 定义的时间戳有效性以及通过 auth_hash_check_token 定义的令牌格式。此灵活性有助于创建难以伪造的安全短期 URL。
配置示例
location ^~ /files/ {
auth_hash on;
auth_hash_check_time $arg_ts range_end=$arg_e format=%s;
auth_hash_check_token $arg_st format=hex;
auth_hash_secret "my_secret_key";
auth_hash_message "$uri|$arg_ts|$arg_e|$auth_hash_secret";
auth_hash_algorithm sha256;
if ($auth_hash != "1") {
return 403;
}
rewrite ^/files/(.*)$ /files/$1 break;
}⚠
确保消息中使用的变量已被正确设置;未定义的变量会导致哈希值不正确。
⚠
确保消息字符串包含验证所需的所有预期组件;缺失的元素可能会危及 URLs 的安全性。
⚠
仔细测试过期时间戳的格式;格式不匹配会阻止 token 的成功验证。