pgjwt: JSON Web Tokens
pgjwt
(PostgreSQL JSON Web Token) 扩展允许您在 PostgreSQL 数据库中创建和解析 JSON Web Tokens (JWTs)。JWT 通常用于 Web 应用程序和服务中的身份验证和授权。
启用扩展
- 进入仪表盘的数据库页面
- 点击侧边栏中的 扩展
- 搜索
pgjwt
并启用该扩展
API
sign(payload json, secret text, algorithm text default 'HSA256')
: 使用 secret 和 algorithm 对包含 payload 的 JWT 进行签名verify(token text, secret text, algorithm text default 'HSA256')
: 解码使用 secret 和 algorithm 签名的 JWT token
参数说明:
payload
是表示为字符串的加密 JWTsecret
是用于签名 JWT 并验证其完整性的私钥/密钥algorithm
是使用密钥签名 JWT 的方法token
是表示为字符串的加密 JWT
使用方法
安装扩展后,您可以使用其函数来创建和解析JWT。以下是如何使用sign
函数创建JWT的示例:
123456select extensions.sign( payload := '{"sub":"1234567890","name":"John Doe","iat":1516239022}', secret := 'secret', algorithm := 'HS256' );
pgjwt_encode
函数返回一个表示JWT的字符串,可以在各方之间安全传输。
12345678sign--------------------------------- eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX VCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiw ibmFtZSI6IkpvaG4gRG9lIiwiaWF0Ijo xNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y9 22BhjWgQzWXcXNrz0ogtVhfEd2o(1 row)
要解析JWT并提取其声明,可以使用verify
函数。示例如下:
123456select extensions.verify( token := 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiRm9vIn0.Q8hKjuadCEhnCPuqIj9bfLhTh_9QSxshTRsA5Aq4IuM', secret := 'secret', algorithm := 'HS256' );
该函数返回解码后的内容及相关元数据。
1234header | payload | valid-----------------------------+----------------+------- {"alg":"HS256","typ":"JWT"} | {"name":"Foo"} | t(1 row)
相关资源
- 官方
pgjwt
文档