diff --git a/jwtauth.go b/jwtauth.go index a03731a..e9e6a3f 100644 --- a/jwtauth.go +++ b/jwtauth.go @@ -8,6 +8,7 @@ import ( "time" "github.com/lestrrat-go/jwx/v2/jwa" + "github.com/lestrrat-go/jwx/v2/jwk" "github.com/lestrrat-go/jwx/v2/jwt" ) @@ -33,7 +34,7 @@ var ( ErrAlgoInvalid = errors.New("algorithm mismatch") ) -func New(alg string, signKey interface{}, verifyKey interface{}, validateOptions ...jwt.ValidateOption) *JWTAuth { +func New(alg string, signKey interface{}, verifyKey interface{}, jwkSet jwk.Set, validateOptions ...jwt.ValidateOption) *JWTAuth { ja := &JWTAuth{ alg: jwa.SignatureAlgorithm(alg), signKey: signKey, @@ -41,7 +42,9 @@ func New(alg string, signKey interface{}, verifyKey interface{}, validateOptions validateOptions: validateOptions, } - if ja.verifyKey != nil { + if jwkSet != nil { + ja.verifier = jwt.WithKeySet(jwkSet) + } else if ja.verifyKey != nil { ja.verifier = jwt.WithKey(ja.alg, ja.verifyKey) } else { ja.verifier = jwt.WithKey(ja.alg, ja.signKey)