package oidc import ( "time" "forge.cadoles.com/cadoles/bouncer/internal/cache/memory" "forge.cadoles.com/cadoles/bouncer/internal/cache/ttl" "forge.cadoles.com/cadoles/bouncer/internal/proxy/director/layer/authn" "forge.cadoles.com/cadoles/bouncer/internal/store" "github.com/coreos/go-oidc/v3/oidc" "github.com/gorilla/sessions" ) const LayerType store.LayerType = "authn-oidc" func NewLayer(store sessions.Store, funcs ...OptionFunc) *authn.Layer { opts := NewOptions(funcs...) return authn.NewLayer(LayerType, &Authenticator{ httpTransport: opts.HTTPTransport, httpClientTimeout: opts.HTTPClientTimeout, store: store, oidcProviderCache: ttl.NewCache( memory.NewCache[string, *oidc.Provider](), memory.NewCache[string, time.Time](), opts.OIDCProviderCacheTimeout, ), }, opts.AuthnOptions...) }