下面是我的golang代码,我试图创建JWT令牌
package main
import (
"encoding/pem"
"fmt"
"time"
"github.com/dgrijalva/jwt-go"
)
func main() {
// Sample PEM-encoded private key
pemKey := `-----BEGIN EC PRIVATE KEY-----MHcCAQEEIAh5qA3rmqQQuu0vbKV/+zouz/y/Iy2pLpIcWUSyImSwoAoGCCqGSM49AwEHoUQDQgAEYD54V/vp+54P9DXarYqx4MPcm+HKRIQzNasYSoRQHQ/6S6Ps8tpMcT+KvIIC8W/e9k0W7Cm72M1P9jU7SLf/vg==-----END EC PRIVATE KEY-----`
// Convert the PEM-encoded private key to a byte slice
pemBytes, _ := pem.Decode([]byte(pemKey))
// // Parse and decode the private key
key, err := jwt.ParseECPrivateKeyFromPEM(pemBytes.Bytes)
if err != nil {
fmt.Println("Error parsing private key:", err)
return
}
uAccessToken := jwt.NewWithClaims(jwt.SigningMethodES256, jwt.MapClaims{
"iss": "issuer",
"sub": "access token",
"exp": time.Now().Add(time.Minute * 20).Unix(),
})
AccessToken, err := uAccessToken.SignedString(key);
if err != nil {
fmt.Println("Error signing token:", err)
return
}
// // You now have the ECDSA private key available in the 'key' variable
fmt.Println("ECDSA Private Key:", AccessToken)
}
但是每次我尝试创建token时都会得到这个错误:
分析私钥时出错:无效密钥:密钥必须是PEM编码的PKCS 1或PKCS 8私钥
有人能告诉我这里出了什么问题吗?
我试图使用ES256算法创建JWT,我需要私钥。但不知何故,我得到了错误。
1条答案
按热度按时间whitzsjs1#
需要两个解决方案
1-注解/删除
pem.Decode()
它需要原始pem关键字字节.2-关键字串在一个单行更改关键字串
检查溶液here