You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地生成Supabase的ANON_KEY与JWT_SECRET?

自行生成Supabase的ANON_KEY和JWT_SECRET

1. 生成JWT_SECRET

JWT_SECRET是用于签名、验证所有Supabase相关JWT令牌的高强度随机密钥,直接用本地工具即可生成:

  • 用openssl生成64位十六进制密钥(推荐,安全性高):
    openssl rand -hex 32
    
  • 或用uuidgen生成无分隔符的UUID:
    uuidgen | tr -d '-'
    

生成后务必妥善保存该字符串,后续步骤会用到。

2. 生成ANON_KEY

ANON_KEY本质是预签名的JWT令牌,其固定Payload为:

{"role": "anon", "iss": "supabase"}

你需要用刚才生成的JWT_SECRET,以HS256算法签名这个Payload,得到的结果就是ANON_KEY。以下是几种本地实现方式:

方式一:使用jwt-cli(推荐)

如果本地已安装jwt-cli(可通过包管理器安装,如brew install jwt-cli或apt install jwt-cli),执行命令:

echo '{"role": "anon", "iss": "supabase"}' | jwt encode --secret YOUR_JWT_SECRET --alg HS256

替换YOUR_JWT_SECRET为你生成的密钥,输出的字符串即为ANON_KEY。

方式二:使用Node.js脚本

先安装jsonwebtoken包:npm install jsonwebtoken,再创建脚本文件:

const jwt = require('jsonwebtoken');
const secret = 'YOUR_JWT_SECRET'; // 替换为你的JWT_SECRET
const payload = { role: 'anon', iss: 'supabase' };
const anonKey = jwt.sign(payload, secret, { algorithm: 'HS256' });
console.log(anonKey);

运行脚本node generate-anon-key.js即可得到ANON_KEY。

方式三:使用Python脚本

先安装pyjwt库:pip install pyjwt,再执行以下代码:

import jwt
secret = "YOUR_JWT_SECRET" # 替换为你的JWT_SECRET
payload = {"role": "anon", "iss": "supabase"}
anon_key = jwt.encode(payload, secret, algorithm="HS256")
print(anon_key)

3. 验证有效性(可选)

可通过JWT_SECRET验证ANON_KEY是否正确:

  • 用jwt-cli执行:
    echo YOUR_ANON_KEY | jwt decode --secret YOUR_JWT_SECRET
    

输出的Payload需与{"role": "anon", "iss": "supabase"}完全一致,说明生成有效。

关于Kong的说明

Supabase用Kong作为API网关处理JWT认证,核心逻辑是Kong会读取你配置的JWT_SECRET,验证所有传入JWT令牌的合法性。只要你生成的ANON_KEY使用了正确的Payload和JWT_SECRET签名,Kong就能正常识别并允许匿名用户请求,无需额外复杂配置——只需确保JWT_SECRET在Supabase和Kong的配置中完全一致即可。

内容的提问来源于stack exchange,提问作者Hafiz Mansoor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:50:28