gpt4 book ai didi

go - 我有公钥和 JWT,如何检查它在 Go 中是否有效?

转载 作者:IT王子 更新时间:2023-10-29 01:25:59 26 4
gpt4 key购买 nike

我有一个来自身份提供者的公钥

-----BEGIN PUBLIC KEY-----
THIS
-----END PUBLIC KEY-----

还有来 self 的客户的 JWT token 。

如何根据 key 检查 token ?我在使用 jwt-go 时遇到困难,因为 Parse 函数采用标记字符串和 getKey 函数。

不确定如何进行

最佳答案

token 由 RSA 算法签名,该算法使用私钥签名和公钥验证。将您的公钥存储到文件系统并使用 jwt.SigningMethodRS256.Verify() 进行验证。如以下片段:

package main

import (
"fmt"
"strings"
"log"
"io/ioutil"
jwt "github.com/dgrijalva/jwt-go"
)

func main() {
publicKeyPath := "~/public_key.key"
token := "your_jwt_token_here"

if isValid, err := verifyToken(token, publicKeyPath)
if err != nil {
log.Fatal(err)
}

if isValid {
fmt.Println("The token is valid")
} else {
fmt.Println("The token is invalid")
}
}

func verifyToken(token, publicKeyPath string) (bool, error) {
keyData, err := ioutil.ReadFile(publicKeyPath)
if err != nil {
return false, err
}
key, err := jwt.ParseRSAPublicKeyFromPEM(keyData)
if err != nil {
return false, err
}

parts := strings.Split(token, ".")
err = jwt.SigningMethodRS256.Verify(strings.Join(parts[0:2], "."), parts[2], key)
if err != nil {
return false, nil
}
return true, nil
}

关于go - 我有公钥和 JWT,如何检查它在 Go 中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51834234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com