feat: add access token verifier ops to openidProvider (#221)

This commit is contained in:
David Sharnoff 2022-09-29 22:39:40 -07:00 committed by GitHub
parent 2d248b1a1a
commit 328d0e1251
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 15 deletions

View file

@ -171,20 +171,21 @@ func NewOpenIDProvider(ctx context.Context, config *Config, storage Storage, opO
} }
type openidProvider struct { type openidProvider struct {
config *Config config *Config
endpoints *endpoints endpoints *endpoints
storage Storage storage Storage
signer Signer signer Signer
idTokenHintVerifier IDTokenHintVerifier idTokenHintVerifier IDTokenHintVerifier
jwtProfileVerifier JWTProfileVerifier jwtProfileVerifier JWTProfileVerifier
accessTokenVerifier AccessTokenVerifier accessTokenVerifier AccessTokenVerifier
keySet *openIDKeySet keySet *openIDKeySet
crypto Crypto crypto Crypto
httpHandler http.Handler httpHandler http.Handler
decoder *schema.Decoder decoder *schema.Decoder
encoder *schema.Encoder encoder *schema.Encoder
interceptors []HttpInterceptor interceptors []HttpInterceptor
timer <-chan time.Time timer <-chan time.Time
accessTokenVerifierOpts []AccessTokenVerifierOpt
} }
func (o *openidProvider) Issuer() string { func (o *openidProvider) Issuer() string {
@ -453,6 +454,13 @@ func WithHttpInterceptors(interceptors ...HttpInterceptor) Option {
} }
} }
func WithAccessTokenVerifierOpts(opts ...AccessTokenVerifierOpt) Option {
return func(o *openidProvider) error {
o.accessTokenVerifierOpts = opts
return nil
}
}
func buildInterceptor(interceptors ...HttpInterceptor) func(http.HandlerFunc) http.Handler { func buildInterceptor(interceptors ...HttpInterceptor) func(http.HandlerFunc) http.Handler {
return func(handlerFunc http.HandlerFunc) http.Handler { return func(handlerFunc http.HandlerFunc) http.Handler {
handler := handlerFuncToHandler(handlerFunc) handler := handlerFuncToHandler(handlerFunc)

View file

@ -48,11 +48,22 @@ func (i *accessTokenVerifier) KeySet() oidc.KeySet {
return i.keySet return i.keySet
} }
func NewAccessTokenVerifier(issuer string, keySet oidc.KeySet) AccessTokenVerifier { type AccessTokenVerifierOpt func(*accessTokenVerifier)
func WithSupportedAccessTokenSigningAlgorithms(algs ...string) AccessTokenVerifierOpt {
return func(verifier *accessTokenVerifier) {
verifier.supportedSignAlgs = algs
}
}
func NewAccessTokenVerifier(issuer string, keySet oidc.KeySet, opts ...AccessTokenVerifierOpt) AccessTokenVerifier {
verifier := &accessTokenVerifier{ verifier := &accessTokenVerifier{
issuer: issuer, issuer: issuer,
keySet: keySet, keySet: keySet,
} }
for _, opt := range opts {
opt(verifier)
}
return verifier return verifier
} }