43 lines
881 B
Go
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
|
|
}
|