概述
因为公司业务需要做第三方单点登录,上级系统使用Java kisso库生成jwt token,但是因为公司的分系统使用的go语言,所以在解释jwt token方面不那么直接,经过测试后,博文记录,用于备忘
代码
go
package main
import (
"fmt"
"github.com/dgrijalva/jwt-go"
)
func main() {
// 定义一个共享秘钥,这个秘钥是从kisso jar提取出来的默认KEY
key := []byte("3QD2j1B1s6Uj1jx6q8")
tokenString := ....
// 验证JWT令牌的有效性
parsedToken, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
return key, nil
})
if claims, ok := parsedToken.Claims.(jwt.MapClaims); ok && parsedToken.Valid {
fmt.Println(claims["sub"], claims["name"], claims["iat"])
} else {
fmt.Println(err)
}
}
主要就是加密KEY,如果没有约定就用默认的,有约定就用约定的