oidc

package
v0.9.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 27, 2025 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package oidc implements OIDC token handling in a multi-tenant environment. For this a Handler is created, which holds the Providers for validating tokens. You can either register providers in a static manner, or inject a client to query providers during runtime.

Index

Constants

View Source
const (
	IssuerPrefix     = "issuer_"
	IntrospectPrefix = "introspect_"
)

Variables

View Source
var (
	ErrInvalidToken = errors.New("invalid token")
	ErrNoProvider   = errors.New("no provider")
)
View Source
var (
	DefaultIssuerClaims = []string{"iss"}
)

Functions

This section is empty.

Types

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler tracks the set of identity providers to support multi tenancy.

func NewHandler

func NewHandler(opts ...HandlerOption) (*Handler, error)

NewHandler creates a new handler and applies the given options.

func (*Handler) ParseAndValidate

func (handler *Handler) ParseAndValidate(ctx context.Context, rawToken string, userclaims any, useCache bool) error

func (*Handler) ProviderFor

func (handler *Handler) ProviderFor(_ context.Context, issuer string) (*Provider, error)

ProviderFor returns the provider for the given issuer.

func (*Handler) RegisterStaticProvider added in v0.5.4

func (handler *Handler) RegisterStaticProvider(provider *Provider)

RegisterStaticProvider registers a provider with the handler.

type HandlerOption

type HandlerOption func(*Handler) error

HandlerOption is used to configure a handler.

func WithFeatureGates added in v0.7.0

func WithFeatureGates(fg *commoncfg.FeatureGates) HandlerOption

func WithIssuerClaimKeys

func WithIssuerClaimKeys(issuerClaimKeys ...string) HandlerOption

WithIssuerClaimKeys configures the behavior of a certain provider.

func WithProviderCacheExpiration

func WithProviderCacheExpiration(expiration, cleanup time.Duration) HandlerOption

WithProviderCacheExpiration configures the expiration of cached providers.

func WithStaticProvider added in v0.5.4

func WithStaticProvider(provider *Provider) HandlerOption

WithStaticProvider registers the given provider.

type Introspection

type Introspection struct {
	Active bool `json:"active"` // Required. Indicator of whether the presented token is currently active.

	// Error response fields e.g. bad credentials
	Error            string `json:"error,omitempty"`
	ErrorDescription string `json:"error_description,omitempty"`
}

type Provider

type Provider struct {
	// contains filtered or unexported fields
}

Provider represents a specific OIDC provider.

func NewProvider

func NewProvider(issuerURL *url.URL, audiences []string, opts ...ProviderOption) (*Provider, error)

NewProvider creates a new provider and applies the given options.

func (*Provider) SigningKeyFor

func (provider *Provider) SigningKeyFor(ctx context.Context, keyID string) (*jose.JSONWebKey, error)

SigningKeyFor returns the key for the given key.

type ProviderOption

type ProviderOption func(*Provider) error

ProviderOption is used to configure a provider.

func WithCustomJWKSURI

func WithCustomJWKSURI(jwksURI *url.URL) ProviderOption

WithCustomJWKSURI configures a custom JWKS URI.

func WithIntrospectTokenURL

func WithIntrospectTokenURL(introspectURL *url.URL) ProviderOption

WithIntrospectTokenURL configures a token introspection endpoint.

func WithProviderHTTPClient added in v0.9.5

func WithProviderHTTPClient(c *http.Client) ProviderOption

WithProviderHTTPClient configures a dedicated http client.

func WithSigningKeyCacheExpiration

func WithSigningKeyCacheExpiration(expiration, cleanup time.Duration) ProviderOption

WithSigningKeyCacheExpiration configures the expiration of cached signing keys. A cach miss will result in a new request to the JWKS URI.

func WithoutCache

func WithoutCache() ProviderOption

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL