framework_v2/internal/providers/jwks/jwks.go
2024-06-22 19:15:41 +08:00

43 lines
881 B
Go

package jwks
import (
"errors"
"framework_v2/internal/providers/config"
"framework_v2/internal/providers/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 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
}