package jwks import ( "errors" "framework_v2/internal/app/config" "framework_v2/internal/app/logger" "github.com/MicahParks/keyfunc/v3" "github.com/golang-jwt/jwt/v5" "time" ) var refreshRate = 1 * time.Hour var Jwks keyfunc.Keyfunc var ( ErrJWKSNotInitialized = errors.New("JWKS is not initialized") ) func InitJwksRefresh() { // 启动一个定时器 go func() { for { RefreshJWKS() time.Sleep(refreshRate) } }() } func RefreshJWKS() { logger.Logger.Info("Refreshing JWKS...") var err error Jwks, err = keyfunc.NewDefault([]string{config.Config.JWKS.Url}) if err != nil { logger.Logger.Error("Failed to create JWK Set from resource at the given URL.\nError: " + err.Error()) } logger.Logger.Info("JWKS refreshed.") } func ParseJWT(jwtB64 string) (*jwt.Token, error) { //if Jwks.Keyfunc == nil { // Logger.Error(ErrJWKSNotInitialized.Error()) // return nil, ErrJWKSNotInitialized //} token, err := jwt.Parse(jwtB64, Jwks.Keyfunc) return token, err }