本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
JWT Proxy 是一款用于服务间请求认证与授权的互补性服务,旨在保障分布式系统中服务间通信的安全性。该镜像包含两个核心组件:
用于使用私钥对出站请求进行JWT签名,核心特性包括:
Authorization 请求头,包含请求源服务标识、目标服务标识等JWT声明。潜在特性(规划中):
限制:
CONNECT 隧道机制仅支持转发HTTPS请求(默认客户端均使用 CONNECT 处理HTTPS请求,完全兼容)。用于验证由正向代理签署的入站请求,核心特性包括:
Authorization JWT头。通过配置文件启动JWT Proxy:
jwtproxy -config config.yaml
配置文件以 jwtproxy 为顶层键,通过 signer_proxy 启用正向代理,通过 verifier_proxies 启用一个或多个反向代理。基本结构如下:
jwtproxy: # 正向代理配置(可选,存在则启用正向代理) signer_proxy: <Signer Config> # 反向代理配置(可选,存在则启用反向代理,支持多实例) verifier_proxies: - <Verifier Config> - <Verifier Config>
用于配置JWT正向代理,示例及参数说明如下:
jwtproxy: signer_proxy: enabled: <bool> # 是否启用,默认true listen_addr: <string> # 代理绑定地址,默认":8080" shutdown_timeout: <time.Duration> # 关闭超时,默认"1m" # MITM SSL配置(可选,用于签署HTTPS请求) ca_key_file: <path> # CA私钥文件路径(必填,否则HTTPS请求将被拒绝) ca_crt_file: <path> # CA证书文件路径(必填,否则HTTPS请求将被拒绝) trusted_certificates: <[]string> # 信任的证书列表,默认使用系统根证书 insecure_skip_verify: <bool> # 是否跳过远程服务证书验证,默认false signer: issuer: <string> # 签发者标识(必填,如服务名称) expiration_time: <time.Duration> # JWT有效期,默认"5m" max_skew: <time.Duration> # 允许的时间偏差,默认"1m" nonce_length: <int> # 随机数长度,默认32 # 私钥配置(必填,支持自动生成或预共享) private_key: type: <string> # 私钥类型:"autogenerated"(自动生成)或"preshared"(预共享) options: <map[string]interface{}> # 对应类型的配置选项
私钥配置示例:
自动生成私钥(自动生成密钥对并发布公钥至密钥服务器):
private_key: type: autogenerated options: rotate_every: <time.Duration> # 密钥轮换周期,默认"12h" key_folder: <string> # 密钥存储目录,默认"~/.config/jwtproxy/" key_server: # 密钥服务器配置(需符合密钥注册中心规范) type: keyregistry options: registry: <string> # 密钥服务器基础URL(必填)
预共享私钥(使用指定的私钥文件):
private_key: type: preshared options: key_id: <string> # 密钥唯一标识(必填) private_key_path: <path> # PEM格式私钥文件路径(必填)
用于配置JWT反向代理,示例及参数说明如下:
jwtproxy: verifier_proxies: - enabled: <bool> # 是否启用,默认true listen_addr: <string> # 绑定地址(支持HTTP/HTTPS URL或UNIX socket,格式"unix:/path"),默认":8081" shutdown_timeout: <time.Duration> # 关闭超时,默认"1m" # SSL终止配置(可选,启用HTTPS时必填) key_file: <path> # PEM格式私钥文件路径 crt_file: <path> # PEM格式证书文件路径 verifier: upstream: <string> # 上游服务地址(支持HTTP/HTTPS URL或UNIX socket),必填 audience: <string> # JWT受众声明(aud)的预期值(如服务URL),必填 max_skew: <time.Duration> # 允许的时间偏差,默认"1m" max_ttl: <time.Duration> # JWT最大生存时间,默认"5m" excludes: <[]string> # 无需认证的路径列表(如"/healthz"),默认nil auth_redirect_url: <string> # 未认证请求重定向URL,默认返回403 cookies_enabled: <bool> # 是否从"access_token" cookie提取JWT,默认false # 公钥获取配置(必填) key_server: type: <string> # 密钥服务器类型:"keyregistry"(密钥注册中心)或"preshared"(预共享,测试用) options: <map[string]interface{}> # 对应类型的配置选项 # 随机数(nonce)存储配置(必填) nonce_storage: type: <string> # 存储类型:"local"(内存缓存)或"void"(不验证) options: <map[string]interface{}> # 对应类型的配置选项
密钥服务器配置示例:
密钥注册中心(从密钥服务器动态获取公钥):
key_server: type: keyregistry options: registry: <string> # 密钥服务器基础URL,必填 cache: # 缓存配置(可选) duration: <time.Duration> # 缓存有效期,默认"10m" purge_interval: <time.Duration> # 缓存清理间隔,默认"1m"
预共享密钥服务器(测试用,仅支持单个公钥):
key_server: type: preshared options: issuer: <string> # 允许的签发者标识,必填 key_id: <string> # 密钥唯一标识,必填 public_key_path: <path> # PEM格式公钥文件路径,必填
随机数存储配置示例:
本地内存缓存(存储并验证nonce,防止重放攻击):
nonce_storage: type: local options: purge_interval: <time.Duration> # 缓存清理间隔,默认0(即时清理)
空存储(不验证nonce,适用于无需严格唯一性校验场景):
nonce_storage: type: void
正向代理签署HTTPS请求时需作为中间人(MITM),需生成CA证书和私钥以伪造目标服务器证书。若未指定,代理将拒绝转发HTTPS请求。
生成有效期1年的CA证书和私钥(无密码):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ca.key -out ca.crt
ca.crt:CA证书,需分发给所有通过正向代理发起请求的客户端并信任。ca.key:CA私钥,需保密,通过 ca_key_file 和 ca_crt_file 配置到正向代理。反向代理启用SSL终止时,需提供服务端证书和私钥(可自签名或由CA签发)。
生成自签名密钥对(有效期1年):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout reverseProxy.key -out reverseProxy.crt
Common Name 与反向代理的访问域名一致。key_file 和 crt_file 配置到反向代理。docker build -t jwtproxy .
将本地配置文件挂载至容器,指定配置启动:
docker run -it -v /path/to/local/config:/config jwtproxy -config /config/config.yaml
/path/to/local/config:本地存放 config.yaml、CA证书、密钥等文件的目录。创建 docker-compose.yml:
version: "3" services: jwtproxy: build: . volumes: - ./config:/config # 挂载本地配置目录 ports: - "8080:8080" # 正向代理端口(若启用) - "8081:8081" # 反向代理端口(若启用) command: -config /config/config.yaml
启动服务:
docker-compose up -d
运行项目测试用例:
go test ./...
go build -o jwtproxy cmd/jwtproxy/main.go
运行二进制:
./jwtproxy -config config.yaml
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429