mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2025-12-30 20:12:29 +00:00
This commit adds OpenID Connect (OIDC) provider functionality to tinyauth, allowing it to act as an OIDC identity provider for other applications. Features: - OIDC discovery endpoint at /.well-known/openid-configuration - Authorization endpoint for OAuth 2.0 authorization code flow - Token endpoint for exchanging authorization codes for tokens - ID token generation with JWT signing - JWKS endpoint for public key distribution - Support for PKCE (code challenge/verifier) - Nonce validation for ID tokens - Configurable OIDC clients with redirect URIs, scopes, and grant types Validation: - Docker Compose setup for local testing - OIDC test client (oidc-whoami) with session management - Nginx reverse proxy configuration - DNS server (dnsmasq) for custom domain resolution - Chrome launch script for easy testing Configuration: - OIDC configuration in config.yaml - Example configuration in config.example.yaml - Database migrations for OIDC client storage
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package loaders
|
|
|
|
import (
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/traefik/paerser/cli"
|
|
"github.com/traefik/paerser/file"
|
|
"github.com/traefik/paerser/flag"
|
|
)
|
|
|
|
type FileLoader struct{}
|
|
|
|
func (f *FileLoader) Load(args []string, cmd *cli.Command) (bool, error) {
|
|
flags, err := flag.Parse(args, cmd.Configuration)
|
|
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
// Check for experimental config file flag (supports both traefik.* and direct format)
|
|
// Note: paerser converts flags to lowercase, so we check lowercase versions
|
|
configFilePath := ""
|
|
if val, ok := flags["traefik.experimental.configfile"]; ok {
|
|
configFilePath = val
|
|
} else if val, ok := flags["experimental.configfile"]; ok {
|
|
configFilePath = val
|
|
}
|
|
|
|
if configFilePath == "" {
|
|
return false, nil
|
|
}
|
|
|
|
log.Warn().Str("configFile", configFilePath).Msg("Using experimental file config loader, this feature is experimental and may change or be removed in future releases")
|
|
|
|
err = file.Decode(configFilePath, cmd.Configuration)
|
|
|
|
if err != nil {
|
|
log.Error().Err(err).Str("configFile", configFilePath).Msg("Failed to decode config file")
|
|
return false, err
|
|
}
|
|
|
|
return true, nil
|
|
}
|