我是在网络应用程序上使用 JWT 的新手。我不确定应该在 JWT 中存储哪些信息,但就我而言,我正在保存敏感的用户数据,例如电子邮件和用户名。我希望在我的 JWT 上安全地保护这些信息。
使用该pyjwt
模块,我能够成功创建我的令牌。这是我如何使用它的示例。
import jwt
from datetime import datetime, timedelta
data = {
"user": {}, # Here I would fill with my user data.
"exp": datetime.utcnow() + timedelta(hours=2)
}
jwt.encode(data,"my-super-secret-key", "HS256")
上面的代码返回一个我认为它已加密的令牌。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7fSwiZXhwIjoxNjMwMzAxMjI4fQ.sF3NeOArV5Mkgz9oemNMA4-RPF-mXKCIkQrlMQPLMV4
使用https://jwt.io/ JWT 检查器,我发现我的令牌实际上是在没有使用my-super-secret-key
. 这让我想知道 PyJWT 中密钥的目的是什么。我的猜测是它只是为了签署令牌。
我如何才能真正保护我的 JWT 令牌?(我读过关于 JWE 的文章,但还不太明白,非常感谢简明的解释)