【问题标题】:Is it safe to use one signing key to sign a jwt?使用一个签名密钥签署 jwt 是否安全?
【发布时间】:2021-01-01 23:39:52
【问题描述】:

我正在用 Golang 构建一个 web api。而且我想在这个 API 中实现身份验证,所以我在看 JWT。

dgrijalva/jwt-go的JWT实现中,给出如下示例:

token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
    "foo": "bar",
    "nbf": time.Date(2015, 10, 10, 12, 0, 0, 0, time.UTC).Unix(),
})

tokenString, err := token.SignedString(hmacSampleSecret)

hmacSampleSecret 用于对密钥进行签名。出于安全原因,这个hmacSampleSecret 是否应该是 .env 文件中的字符串?或者这个值是否应该偶尔轮换和过期?

如果推荐最后一个,是否已经有我可以使用的实现?

【问题讨论】:

    标签: go jwt


    【解决方案1】:

    如果您想使用 SHA256 算法进行 jwt 签名,那么您应该生成 long random secret 并将其存储在您的 .env 文件中。

    秘密应该是静态的,不要太担心安全性,任何人几乎不可能暴力破解并找到你的秘密。

    你不需要改变你的秘密:)

    【讨论】:

    • 秘密可以改变,但你可能不想经常这样做。如果您确实更改了您的秘密,则效果将相当于到目前为止已发布的所有令牌都将变为无效,因此所有用户会话都将被注销。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2018-01-09
    • 2018-09-10
    • 2022-08-12
    • 2022-12-01
    • 2014-11-01
    相关资源
    最近更新 更多