feat: allow id token hint verifier to specify algs (#229)
This commit is contained in:
parent
89d1c90bf2
commit
1aa75ec953
2 changed files with 21 additions and 2 deletions
10
pkg/op/op.go
10
pkg/op/op.go
|
@ -190,6 +190,7 @@ type openidProvider struct {
|
||||||
interceptors []HttpInterceptor
|
interceptors []HttpInterceptor
|
||||||
timer <-chan time.Time
|
timer <-chan time.Time
|
||||||
accessTokenVerifierOpts []AccessTokenVerifierOpt
|
accessTokenVerifierOpts []AccessTokenVerifierOpt
|
||||||
|
idTokenHintVerifierOpts []IDTokenHintVerifierOpt
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *openidProvider) Issuer() string {
|
func (o *openidProvider) Issuer() string {
|
||||||
|
@ -299,7 +300,7 @@ func (o *openidProvider) Encoder() httphelper.Encoder {
|
||||||
|
|
||||||
func (o *openidProvider) IDTokenHintVerifier() IDTokenHintVerifier {
|
func (o *openidProvider) IDTokenHintVerifier() IDTokenHintVerifier {
|
||||||
if o.idTokenHintVerifier == nil {
|
if o.idTokenHintVerifier == nil {
|
||||||
o.idTokenHintVerifier = NewIDTokenHintVerifier(o.Issuer(), o.openIDKeySet())
|
o.idTokenHintVerifier = NewIDTokenHintVerifier(o.Issuer(), o.openIDKeySet(), o.idTokenHintVerifierOpts...)
|
||||||
}
|
}
|
||||||
return o.idTokenHintVerifier
|
return o.idTokenHintVerifier
|
||||||
}
|
}
|
||||||
|
@ -465,6 +466,13 @@ func WithAccessTokenVerifierOpts(opts ...AccessTokenVerifierOpt) Option {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WithIDTokenHintVerifierOpts(opts ...IDTokenHintVerifierOpt) Option {
|
||||||
|
return func(o *openidProvider) error {
|
||||||
|
o.idTokenHintVerifierOpts = 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)
|
||||||
|
|
|
@ -53,11 +53,22 @@ func (i *idTokenHintVerifier) MaxAge() time.Duration {
|
||||||
return i.maxAge
|
return i.maxAge
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewIDTokenHintVerifier(issuer string, keySet oidc.KeySet) IDTokenHintVerifier {
|
type IDTokenHintVerifierOpt func(*idTokenHintVerifier)
|
||||||
|
|
||||||
|
func WithSupportedIDTokenHintSigningAlgorithms(algs ...string) IDTokenHintVerifierOpt {
|
||||||
|
return func(verifier *idTokenHintVerifier) {
|
||||||
|
verifier.supportedSignAlgs = algs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewIDTokenHintVerifier(issuer string, keySet oidc.KeySet, opts ...IDTokenHintVerifierOpt) IDTokenHintVerifier {
|
||||||
verifier := &idTokenHintVerifier{
|
verifier := &idTokenHintVerifier{
|
||||||
issuer: issuer,
|
issuer: issuer,
|
||||||
keySet: keySet,
|
keySet: keySet,
|
||||||
}
|
}
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(verifier)
|
||||||
|
}
|
||||||
return verifier
|
return verifier
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue