如何解决JWT 使用 ES256
我正在尝试使用 ECDSA ES256 方法生成 jwt 令牌并将其用于 api 请求,我已经能够从 []publicPEM
生成 []privatePEM
和 *ecdsa.PrivateKey
,我使用 *ecdsa.PrivateKey
来获取 jwt 令牌
// Secret is revoked
JWT_SECRET := `-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIGaozMA951amsyyAjz/C3FUhdspS1Kqi3s5EdbJeop0boAoGCCqGSM49
AwEHoUQDQgAEPvB35tXsy4P4ZKpH3jAGGWA4ZVOnQsiLPBrWfjk76UXnrXqZO5LW
EHK9AyZbafH3s+QwFG5zIrv8gf6Fx5qItw==
-----END EC PRIVATE KEY-----`
block,_ := pem.Decode([]byte(JWT_SECRET))
if privKey,err = x509.ParseECPrivateKey(block.Bytes); err != nil {
log.Fatal(err)
}
....
// Generate token
uAccessToken := jwt.NewWithClaims(jwt.SigningMethodES256,jwt.MapClaims{
"iss": "issuer","sub": "access token","exp": time.Now().Add(time.Minute * 20).Unix(),})
if tA.AccessToken,err = uAccessToken.SignedString(privKey); err != nil {
return nil,err
}
/// Parse token
token,err := jwt.Parse(tA.AccessToken,func(t *jwt.Token) (interface{},error) {
log.Println("%s",t.Valid) // false
return privKey,nil
})
if err != nil {
log.Fatal(err) // Key is of invalid type
}
据我从文档中了解到,KeyFunc
应该返回用于 HS256 []byte 签名令牌的密钥,但 *ecdsa.PrivateKey
在这种情况下不起作用。
我无法通过这一点来验证令牌:(
不知道我做错了什么,还是 golang 的新手
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。