数据库

pgjwt: JSON Web Tokens


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

启用扩展#

  1. 转到仪表板中的 数据库 页面。
  2. 在侧边栏中单击 扩展
  3. 搜索 pgjwt 并启用该扩展。

API#

其中

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

用法#

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

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

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

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

要解析 JWT 并提取其声明,您可以使用 verify 函数。这是一个例子

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

它返回解码的内容和一些关联的元数据。

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

资源#