使用jwt-go Library - 密钥无效或类型无效

psb*_*its 3 parsing token go jwt

我试图将一个令牌传递给这个GO库(http://godoc.org/github.com/dgrijalva/jwt-go)中为JWT定义的"Parse(令牌字符串,keyFunc Keyfunc)"GO例程 - 令牌解析/验证.

当我将令牌传递给此函数时 -

token, err := jwt.Parse(getToken, func(token *jwt.Token) (interface{}, error) {
        return config.Config.Key, nil
    })
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,上面写着"密钥无效或类型无效".

我的config结构在config.go文件中看起来像这样 -

config struct {
 Key string
}
Run Code Online (Sandbox Code Playgroud)

有什么建议可以解决这个问题?我传递的令牌是JWT令牌.

Man*_*ill 16

我不确定这对其他人来说是否会成为问题。

我的问题是我正在使用签名方法"SigningMethodES256",但"SigningMethodHS256"或任何与SigningMethodHS*工作正常。

如果有人知道为什么这是一个问题,请回答。

  • 有点晚了。这是因为每种签名方法都有自己的密钥类型。您可以在此处查看每种签名方法所需的类型 https://golang-jwt.github.io/jwt/usage/signing_methods/ (2认同)

小智 8

config struct {
 Key string
}
Run Code Online (Sandbox Code Playgroud)

Key 需要成为一个 []byte


psb*_*its 6

另一种方法是做这样的事情 -

token, err := jwt.Parse(getToken, func(token *jwt.Token) (interface{}, error) {
        return []byte(config.Config.Key), nil
    })
Run Code Online (Sandbox Code Playgroud)

整个想法是 Parse 函数返回一个字节切片。