lua-nginx-guard-jwt
验证 JWT 令牌并将其声明值映射到 HTTP 头部或查询参数。
$ opm get dailymotion/lua-nginx-guard-jwt
Nginx Guard - 验证 JWT 令牌并将其声明值映射到 HTTP 头部
此库正在开发中,尚未准备好投入生产使用。
将 JWT 令牌中的声明值映射到 HTTP 头部请求,并允许指定自定义映射。
安装
通过 opm:
opm get dailymotion/lua-nginx-guard-jwt
概述
# nginx.conf
http {
server {
listen 80;
server_name localhost;
location = / {
access_by_lua '
local j = require "guardjwt"
local validators = require "resty.jwt-validators"
j.GuardJWT.verify(
{
foo = {
validators = validators.equals_any_of({ "bar", "baz" }),
header = "X-DM-Foo"
}
},
{
secret = "guardjwt",
is_token_mandatory = false
}
)
';
proxy_pass http://target/;
}
}
}
上面的示例将
使用密钥
guardjwt
解密 JWT 令牌从密钥
foo
获取声明值验证其值是否等于 "bar" 或 "baz"
将值映射到
X-DM-Foo
HTTP 头部。
描述
此库提供了一种简单的方法来将 JWT 令牌中的声明值映射到 HTTP 头部请求。
在底层,此库使用
API - 方法
local guard = require "guardjwt"
verify_and_map
syntax: guard.GuardJWT.verify_and_map(claim_spec [, config])
验证来自 "Authorization" 头部的 JTW 令牌,并根据特定规范进行验证。然后,将声明值与其关联的头文件进行映射。
claim_spec
格式
{
foo: {
validators: [resty.jwt-validators] validator.
header: optional [string] Header name used to map the claim value.
},
bar: {
validators: [resty.jwt-validators] validator.
header: optional [string] Header name used to map the claim value.
},
}
验证器文档可在 SkyLothar 仓库 上直接获取。
config
格式
{
secret: [string] which describe private key to decode JWT,
is_token_mandatory: [bool][default=false] is token is mandatory & valid.
clear_authorization_header: [bool][default=true] Clear "Authorization" header
}
secret
: 用于解码 JWT 的私钥,如果未提供,则从 JWT_SECRET 环境变量中推断值。is_token_mandatory
: 令牌是否必须存在且有效,默认为 false。clear_authorization_header
: 清除 "Authorization" 头部,默认为 true。
示例
local j = require "guardjwt"
local validators = require "resty.jwt-validators"
j.GuardJWT.verify_and_map(
{
foo = {
validators = validators.equals_any_of({ "bar" }),
header = "X-DM-Foo"
}
},
{
secret = "guardjwt",
is_token_mandatory = true,
clear_authorization_header = true
}
)
raw_verify_and_map
syntax: guard.GuardJWT.raw_verify_and_map(nginx, claim_spec [, config])
验证来自 "Authorization" 头部的 JTW 令牌,并根据特定规范进行验证。然后,将声明值与其关联的头文件进行映射。
nginx
: NGINX 对象。claim_spec
&config
: 上面描述的格式。
示例:网关
您可以通过网关示例 (./example/gateway) 来尝试 guardjwt
模块。
# Run the target container (Where the traffic will be proxify)
docker-compose up target
# Run the gateway
docker-compose up gateway
当两个容器都准备就绪后,您可以向网关发送一个带有 JWT 令牌的 HTTP 请求。
curl --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIifQ.DFmxCulxIMpi4fWbVbhnZLCJxvfSb6PhkGDQYsIyOks' http://localhost:8080/
您可以在目标日志中看到 HTTP 请求代理,以及解码后的头文件。
target_1 | http GET /
target_1 | host: target
target_1 | connection: close
target_1 | user-agent: curl/7.47.1
target_1 | accept: */*
target_1 | x-dm-foo: bar
示例:如何在 GuardJWT 上进行开发?
如上所述的方法,您需要先启动目标容器。它将用于处理代理请求。您应该查看日志以调试 guardjwt
模块。
docker-compose up target
要进行开发,只需更新文件 (./lib/guardjwt.lua) 并执行以下命令。
make develop-run
作者
Stanislas Chollet (tsunammis)
许可证
mit
依赖项
SkyLothar/lua-resty-jwt >= 0.1.9, luajit >= 2.1.0, ngx_http_lua >= 0.10.6
版本
-
验证 JWT 令牌并将其声明值映射到 HTTP 头部或查询参数。 2017-06-15 16:41:30
-
验证 JWT 令牌并将其声明值映射到 HTTP 头部或查询参数。 2017-01-10 18:06:58
-
验证 JWT 令牌并将其声明值映射到 HTTP 头部或查询参数。 2016-11-29 09:36:19
-
验证 JWT 令牌并将其声明值映射到 HTTP 头部或查询参数。 2016-11-25 10:04:52
-
将 JWT 声明值映射到 HTTP 头部请求,并允许指定自定义映射。 2016-11-23 17:59:15
-
将 JWT 声明值映射到 HTTP 头部请求,并允许指定自定义映射。 2016-11-22 21:30:32
-
将 JWT 声明值映射到 HTTP 头部请求,并允许指定自定义映射。 2016-11-18 14:35:19
-
将 JWT 声明值映射到 HTTP 头部请求,并允许指定自定义映射。 2016-11-17 22:04:39
-
2016-11-17 21:51:36
-
2016-11-17 21:47:17
-
2016-11-17 21:43:37