第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

輸入自定義電子郵件聲明時(shí)無(wú)法創(chuàng)建 JWT 令牌

輸入自定義電子郵件聲明時(shí)無(wú)法創(chuàng)建 JWT 令牌

Go
SMILET 2022-05-10 14:10:11
我正在嘗試使用 Go 生成 JWT 令牌,并創(chuàng)建了以下函數(shù)。我需要在 jwt 中添加電子郵件地址,但是當(dāng)我這樣做時(shí),我收到一條錯(cuò)誤消息key is of invalid typefunc GenerateUserToken(expiryHours time.Duration, email string, secretKey string) (string, error) {    // Create a new token object, specifying signing method and the claims    // you would like it to contain.    token := jwt.New(jwt.SigningMethodES256)    claims := token.Claims.(jwt.MapClaims)    claims["exp"] = time.Now().Add(time.Hour * expiryHours).Unix()    claims["email"] = email    tokenStr, err := token.SignedString([]byte(secretKey))    if err != nil {        return "", err    }    return tokenStr, nil}這可能是什么原因?我犯了什么錯(cuò)誤?
查看完整描述

1 回答

?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

JWT 支持許多簽名算法,這對(duì)這個(gè)特定的 API 來(lái)說(shuō)是一個(gè)挑戰(zhàn):根據(jù)簽名算法,它希望看到與該算法匹配的密鑰。

如果您查看此特定庫(kù)的 API 文檔:

https://godoc.org/github.com/dgrijalva/jwt-go

你會(huì)看到SigningMethodXXX類型。這些是您選擇的簽名方法選擇的簽名者。對(duì)于 ES256,它使用SigningMethodECDSA

https://godoc.org/github.com/dgrijalva/jwt-go#SigningMethodECDSA

如果您查看Sign方法文檔,您會(huì)看到它說(shuō):

對(duì)于此簽名方法,密鑰必須是 ecdsa.PrivateKey 結(jié)構(gòu)

您可以使用以下方法從 PEM 文件中解析:

https://godoc.org/github.com/dgrijalva/jwt-go#ParseECPrivateKeyFromPEM

例如:

pk, err:= jwt.ParseECPrivateKeyFromPEM(pemData)
tokenStr, err := token.SignedString(pk)

這應(yīng)該會(huì)給你一個(gè)帶有 ES256 的簽名令牌。

所以,你必須首先弄清楚你有什么樣的鑰匙。如果您在字符串中有 ECDSA 密鑰的 PEM 編碼,則使用此方法對(duì)其進(jìn)行解析并將生成的私鑰傳遞給簽名者。

但是,如果您只有一個(gè)字符串密鑰(如密碼)并且您將與 JWT 的用戶共享此密鑰,那么您可以使用 HMAC 密鑰。HMAC 密鑰只是您與用戶共享的字節(jié)數(shù)組密鑰,因此他們可以驗(yàn)證 JWT 是否由您簽名。只需將 SigningMethod 更改為以下常量之一:

https://godoc.org/github.com/dgrijalva/jwt-go#SigningMethodHMAC

然后,您的代碼將正常工作,但您必須將簽名方法更改為類似jwt.New(jwt.SigningMethodHS256)


查看完整回答
反對(duì) 回復(fù) 2022-05-10
  • 1 回答
  • 0 關(guān)注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)