【发布时间】:2021-01-05 22:49:34
【问题描述】:
我看到了私钥,但是在哪里提供公钥以便我可以发布。完美运行,但我错过了公钥,在创建 JWT 令牌时它在哪里给出?我假设下面的示例密钥 (dnfksdmfksd) 是私钥。我正在使用 github.com/dgrijalva/jwt-go 谢谢!
func CreateToken(userid uint64) (string, error) {
var err error
//Creating Access Token
os.Setenv("ACCESS_SECRET", "jdnfksdmfksd") //this should be in an env file
atClaims := jwt.MapClaims{}
atClaims["authorized"] = true
atClaims["user_id"] = userid
atClaims["exp"] = time.Now().Add(time.Minute * 15).Unix()
at := jwt.NewWithClaims(jwt.SigningMethodHS256, atClaims)
token, err := at.SignedString([]byte(os.Getenv("ACCESS_SECRET")))
if err != nil {
return "", err
}
return token, nil
}
【问题讨论】:
-
您使用了错误的公钥和私钥签名方法。对于 RSA,您应该使用 RS256、RS384 或 RS512,而对于 ESDCA,您应该使用 ES256、ES384 或 ES512 作为签名方法。私钥将用于签署令牌和公钥以验证它。
-
谢谢,有没有在 golang 中实现这种实现的链接?
-
希望这个例子对你有所帮助 - github.com/dgrijalva/jwt-go/blob/master/http_example_test.go
标签: go authentication jwt token