数据库

pgjwt: JSON Web Tokens


pgjwt (PostgreSQL JSON Web Token) 扩展允许您在 PostgreSQL 数据库中创建和解析 JSON Web Tokens (JWTs)。JWT 通常用于 Web 应用程序和服务中的身份验证和授权。

启用扩展

  1. 进入仪表盘的数据库页面
  2. 点击侧边栏中的 扩展
  3. 搜索 pgjwt 并启用该扩展

API

参数说明:

  • payload 是表示为字符串的加密 JWT
  • secret 是用于签名 JWT 并验证其完整性的私钥/密钥
  • algorithm 是使用密钥签名 JWT 的方法
  • token 是表示为字符串的加密 JWT

使用方法

安装扩展后,您可以使用其函数来创建和解析JWT。以下是如何使用sign函数创建JWT的示例:

1
2
3
4
5
6
select extensions.sign( payload := '{"sub":"1234567890","name":"John Doe","iat":1516239022}', secret := 'secret', algorithm := 'HS256' );

pgjwt_encode函数返回一个表示JWT的字符串,可以在各方之间安全传输。

1
2
3
4
5
6
7
8
sign--------------------------------- eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX VCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiw ibmFtZSI6IkpvaG4gRG9lIiwiaWF0Ijo xNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y9 22BhjWgQzWXcXNrz0ogtVhfEd2o(1 row)

要解析JWT并提取其声明,可以使用verify函数。示例如下:

1
2
3
4
5
6
select extensions.verify( token := 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiRm9vIn0.Q8hKjuadCEhnCPuqIj9bfLhTh_9QSxshTRsA5Aq4IuM', secret := 'secret', algorithm := 'HS256' );

该函数返回解码后的内容及相关元数据。

1
2
3
4
header | payload | valid-----------------------------+----------------+------- {"alg":"HS256","typ":"JWT"} | {"name":"Foo"} | t(1 row)

相关资源