auth_jwt_extract_request_claims

该 `auth_jwt_extract_request_claims` 指令从 JWT 中提取特定声明并将其设置为请求头。

语法auth_jwt_extract_request_claims claim1 claim2 ...;
默认值none
上下文http, server, location
参数1+

说明

auth_jwt_extract_request_claims 指令用于 httpserverlocation 块的上下文中,用来指定应从 JSON Web Token (JWT) 中提取并作为传入请求头放置的声明。这样下游服务就能访问嵌入在 JWT 中的相关信息。该指令接受一个或多个参数,每个参数表示要提取的声明名称。例如,如果你的 JWT 包含像 'sub' 或 'role' 这样的声明,你可以指定这些以将它们包含在 HTTP 请求的头部。

该指令与 JWT 验证过程配合工作。一旦 JWT 被验证,指定的声明会被解析并添加为头部。这些头部可以在请求处理的后续阶段访问,从而允许 Web 应用利用更丰富的上下文或认证信息。重要的是,该指令的行为假定 JWT 已被正确处理;如果 JWT 验证失败,将不会提取声明,因而也不会设置相应的头部。

用法可以很直接,只需在配置中需要将 JWT 声明提取到头部的地方包含它。它对于授权任务非常有用,例如基于 JWT 中包含的声明进行角色检查或用户识别。

配置示例

location /protected {
    auth_jwt_enabled on;
    auth_jwt_key /path/to/your/jwt_key;
    auth_jwt_location header;
    auth_jwt_extract_request_claims sub role;
}

在提取 claims 之前,请确保 JWT 已被验证;否则,claims 可能不可用。

在 JWT 中指定不存在的 claim 仍会创建一个空 header,且不会产生任何错误。

注意 header 名称可能与现有 request headers 冲突。提取的 claims 会成为 headers。

← 返回所有指令