PyJWT 加密参数的目的是什么?
What is the purpose of PyJWT encryption argument?
我是在网络应用程序上使用 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")
上面的代码,returns 我认为是加密的令牌。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7fSwiZXhwIjoxNjMwMzAxMjI4fQ.sF3NeOArV5Mkgz9oemNMA4-RPF-mXKCIkQrlMQPLMV4
使用 https://jwt.io/ JWT 检查器,我发现我的令牌实际上在没有使用 my-super-secret-key
的情况下被“解密”。这让我想知道 PyJWT 中密钥的用途是什么。我的猜测是它只是为了签署令牌。
我怎样才能真正保护我的 JWT 令牌? (我读过有关 JWE 的资料,但还不是很了解,非常感谢简明的解释)
JWT 由三部分组成:header、负载和签名。所有树部分都将采用 BASE64 编码。它们未加密。
jwt.encode()
的 algorithm
参数定义了用于 签署 令牌的算法。这将证明令牌是真实的,并防止用户和第三方操纵。
您可以在一组对称和非对称算法中进行选择:
对称算法将创建更短的签名,但需要更好地保护密钥,因为它必须存储在参与发行和验证令牌的每台机器上。
非对称算法会创建长签名,至少需要最少的 PKI,但您只需要分发 public 密钥。私钥保留在发行令牌的系统上。
我是在网络应用程序上使用 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")
上面的代码,returns 我认为是加密的令牌。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7fSwiZXhwIjoxNjMwMzAxMjI4fQ.sF3NeOArV5Mkgz9oemNMA4-RPF-mXKCIkQrlMQPLMV4
使用 https://jwt.io/ JWT 检查器,我发现我的令牌实际上在没有使用 my-super-secret-key
的情况下被“解密”。这让我想知道 PyJWT 中密钥的用途是什么。我的猜测是它只是为了签署令牌。
我怎样才能真正保护我的 JWT 令牌? (我读过有关 JWE 的资料,但还不是很了解,非常感谢简明的解释)
JWT 由三部分组成:header、负载和签名。所有树部分都将采用 BASE64 编码。它们未加密。
jwt.encode()
的 algorithm
参数定义了用于 签署 令牌的算法。这将证明令牌是真实的,并防止用户和第三方操纵。
您可以在一组对称和非对称算法中进行选择:
对称算法将创建更短的签名,但需要更好地保护密钥,因为它必须存储在参与发行和验证令牌的每台机器上。
非对称算法会创建长签名,至少需要最少的 PKI,但您只需要分发 public 密钥。私钥保留在发行令牌的系统上。