pg_session_jwt
使用JWT进行会话认证
仓库
neondatabase/pg_session_jwt
https://github.com/neondatabase/pg_session_jwt
源码
pg_session_jwt-0.5.0.tar.gz
pg_session_jwt-0.5.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_session_jwt | 0.5.0 | SEC | Apache-2.0 | Rust |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 7060 | pg_session_jwt | 否 | 是 | 否 | 是 | 是 | 否 | auth |
| 相关扩展 | pg_oidc_validator pgjwt login_hook oidc_validator pg_auth_mon pgsodium auth_delay set_user sslinfo sslutils |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.5.0 | 1817161514 | pg_session_jwt | - |
| RPM | PIGSTY | 0.5.0 | 1817161514 | pg_session_jwt_$v | - |
| DEB | PIGSTY | 0.5.0 | 1817161514 | postgresql-$v-pg-session-jwt | - |
构建
您可以使用 pig build 命令构建 pg_session_jwt 扩展的 RPM / DEB 包:
BASH
安装
您可以直接安装 pg_session_jwt 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
来源:README、v0.5.0 tag、control file
pg_session_jwt 通过 JWT 处理认证会话。配置 JWK 后验证 JWT 真实性;无 JWK 时回退到兼容 PostgREST 的 request.jwt.claims。
SQL
模式1:JWK 验证
在连接时通过 libpq 选项设置 JWK:
BASH
在会话中使用:
SQL
模式2:PostgREST 兼容(无 JWK)
开箱即用适配 PostgREST,无需初始化:
SQL
函数
| 函数 | 返回类型 | 描述 |
|---|---|---|
auth.init() | void | 使用 JWK 初始化会话 |
auth.jwt_session_init(jwt text) | void | 设置并验证 JWT |
auth.session() | jsonb | 获取 JWT 载荷或回退声明 |
auth.jwt() | jsonb | auth.session() 的别名 |
auth.user_id() | text | 获取 sub 声明 |
auth.uid() | uuid | 获取 sub 作为 UUID(或 NULL) |
auth.organization() | jsonb | Neon Auth 组织声明辅助函数 |
auth.organization_id() | uuid | Neon Auth 组织 ID 辅助函数 |
配置
| 参数 | 描述 |
|---|---|
pg_session_jwt.jwk | 用于 JWT 验证的 JWK(在启动或连接时设置) |
pg_session_jwt.audit_log | 启用审计日志(on/off) |
RLS 示例
SQL
对于 Neon Auth 的组织范围策略,使用 o 声明辅助函数:
SQL
版本说明
v0.5.0 README 增加了 Neon Auth 组织辅助函数,并明确区分 auth.jwt()、auth.user_id()、auth.uid() 等通用辅助函数,以及 Neon 专用的 auth.organization() 和 auth.organization_id()。其他认证服务商应使用 auth.jwt() 并直接提取服务商专用声明。