存储用于编码/解码令牌数据的 JWT 密钥的安全方式
Posted
技术标签:
【中文标题】存储用于编码/解码令牌数据的 JWT 密钥的安全方式【英文标题】:Secure way of storing JWT secret key used to encode/decode token data 【发布时间】:2022-01-09 17:08:01 【问题描述】:我正在使用 FastApi 构建一个 Python 应用程序,并且我正在使用 JWT 和 OAuth2 密码流对用户进行身份验证,如他们的文档中所述。当用户登录时,它会收到一个使用 HS256 算法和用户密钥生成的令牌。此令牌作为本地存储存储在浏览器中。然后对于依赖于当前登录用户的每个请求,令牌被发送到后端,使用相同的密钥进行解码并提供所需的信息。在我的应用程序中,我有一个 PostgreSQL 数据库,我的问题是我应该将用于为我拥有的不同类型的用户生成令牌并保护这些密钥的安全密钥存储在哪里。
谢谢
【问题讨论】:
您不必在数据库中保留 JWT 的副本,只需使用私钥来验证令牌。你在使用多个密钥吗? 是的。并且将这个密钥保存在数据库中是否足够安全? 您应该将其保存在生产系统上的 ENV 变量中,以便在需要时能够轻松地重新生成它们 不同类型的用户,是指角色库授权? @sahasrara62 是的,但此时我专注于身份验证 【参考方案1】:推荐的方法是:
创建一个.env
文件并将SECRET
存储在其中
在项目根目录下创建一个settings.py
文件
将SECRET
从.env
导入settings.py
中的一个变量并使用它
【讨论】:
以上是关于存储用于编码/解码令牌数据的 JWT 密钥的安全方式的主要内容,如果未能解决你的问题,请参考以下文章