我想檢查我們的服務器是否生成了 JWT?我使用 JWT 進行身份驗證并使用 RS256 作為 JWT 的算法現在,我想在 Golang 中編寫一個函數來驗證 JWT 令牌是否屬于我們。下面是我實現的代碼: publicKey = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAxxxxxxf2iF+20xHTZ4jTUBzYmikBuUsm0839T5SDmwEquTB\nfQIDAQAB\n-----END PUBLIC KEY-----\n" // sample token string taken from the New example tokenString := this.JWT[0] claims := jwt.MapClaims{} token, err := jwt.ParseWithClaims(tokenString, &claims, func(token *jwt.Token) (interface{}, error) { return []byte(publicKey), nil }) // ... error handling if err != nil { fmt.Println(err) } fmt.Println("TOKEN is:", token.Valid) // do something with decoded claims for key, val := range claims { fmt.Printf("Key: %v, value: %v\n", key, val) }這是輸出:-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvs97nrY4XqXVJT1Y4AU5xxxTLWXK2H4swuXSEyV75Ylem+f2iF+20xHTZ4jTUBzYmikBuUsm0839T5SDmwEquTBfQIDAQAB-----END PUBLIC KEY-----key is of invalid typeTOKEN is: falseKey: iss, value: https://example.comKey: nbf, value: 1.592797834e+09Key: exp, value: 1.592801434e+09Key: sub, value: 3Key: aid, value: 2Key: fea, value: 0Key: iat, value: 1.592797834e+09Key: aud, value: []Key: jti, value: 7a97a2327e671d2bf01253819fb319d6我觀察到key is of invalid type并且token.valid是false。誰能幫我指出錯誤的代碼以及如何解決這個問題?
2 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
從公鑰中刪除換行符并嘗試一下。
publicKey = "-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAxxxxxxf2iF+20xHTZ4jTUBzYmikBuUsm0839T5SDmwEquTBfQIDAQAB-----END PUBLIC KEY-----"
- 2 回答
- 0 關注
- 187 瀏覽
添加回答
舉報
0/150
提交
取消