oidcprovider

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Oct 23, 2026 License: MIT Imports: 15 Imported by: 0

README

GoModularAuth OIDC Provider Plugin (gomodularauth-oidc-provider)

Go Reference

The OIDC Provider Plugin enables GoModularAuth to act as an OpenID Connect (OIDC) Identity Provider (IdP), issuing signed RS256 ID tokens and publishing Discovery and JWKS metadata.

Installation

go get github.com/BladiCreator/go-modular-auth/plugins/oidc-provider

Quick Start

package main

import (
	"context"
	"time"

	auth "github.com/BladiCreator/go-modular-auth"
	adaptermem "github.com/BladiCreator/go-modular-auth/adapters/memory"
	oidcprovider "github.com/BladiCreator/go-modular-auth/plugins/oidc-provider"
	"github.com/BladiCreator/go-modular-auth/user"
)

func main() {
	ctx := context.Background()

	engine, _ := auth.New(auth.Config{
		Adapter: adaptermem.NewAdapter(),
		Plugins: []auth.PluginModule{
			oidcprovider.New(
				oidcprovider.WithIssuer("https://auth.example.com"),
			),
		},
	})

	provider, _ := auth.Get[oidcprovider.OIDCProvider](engine)

	// Issue an OIDC ID token
	u := &user.User{ID: "usr_alice", Email: "alice@example.com"}
	idToken, _ := provider.IssueIDToken(ctx, u, "client_app", "nonce_123", time.Hour)
	_ = idToken
}

Detailed guide: doc/plugins/oidc-provider.md.

Documentation

Overview

Package oidcprovider provides OpenID Connect Provider capabilities (reserved module).

Index

Constants

View Source
const PluginID = "oidc_provider"

Variables

View Source
var (
	ErrUserNotFound   = errors.New("oidc: user not found")
	ErrInvalidUser    = errors.New("oidc: invalid user")
	ErrSigningFailed  = errors.New("oidc: token signing failed")
	ErrKeyUnavailable = errors.New("oidc: private key unavailable")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	Issuer     string
	PrivateKey *rsa.PrivateKey
	KeyID      string
	DefaultTTL time.Duration
	Discovery  *discovery.Document
}

type Module

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

func New

func New(opts ...Option) *Module

func (*Module) ID

func (m *Module) ID() string

func (*Module) Init

func (m *Module) Init(h *auth.Host) error

type OIDCProvider

type OIDCProvider interface {
	GetDiscovery() *discovery.Document
	GetJWKS(ctx context.Context) (*jwks.JWKS, error)
	IssueIDToken(ctx context.Context, u *user.User, clientID, nonce string, ttl time.Duration) (string, error)
	GetUserInfo(ctx context.Context, userID string) (map[string]any, error)
}

type Option

type Option func(*Config)

func WithDefaultTTL

func WithDefaultTTL(ttl time.Duration) Option

func WithIssuer

func WithIssuer(issuer string) Option

func WithPrivateKey

func WithPrivateKey(pk *rsa.PrivateKey, kid string) Option

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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