Documentation
¶
Index ¶
- func DeriveOAuthHMACKey(appSecret string) []byte
- func FetchUserInfo(ctx context.Context, token *oauth2.Token, url string) (map[string]interface{}, error)
- func GeneratePKCEChallenge() (verifier string, challenge string, err error)
- func GenerateRandomString(length int) (string, error)
- func GetStringField(data map[string]interface{}, field string) string
- func SignCookie(payload string, secret []byte) (string, error)
- func ValidateCookie(signed string, secret []byte, maxAge time.Duration) (string, error)
- func ValidateRedirectTo(redirectTo string, trustedOrigins []string) error
- func VerifyHMAC(signature, data string, secret []byte) bool
- type BaseProvider
- func (p *BaseProvider) Exchange(ctx context.Context, code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)
- func (p *BaseProvider) GetAuthURL(state string, opts ...oauth2.AuthCodeOption) string
- func (p *BaseProvider) GetConfig() *oauth2.Config
- func (p *BaseProvider) Name() string
- func (p *BaseProvider) RequiresPKCE() bool
- type DiscordProvider
- type GenericProvider
- type GitHubProvider
- type GoogleProvider
- type ProviderRegistry
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DeriveOAuthHMACKey ¶
DeriveOAuthHMACKey derives an HMAC key from the app secret for OAuth2 operations
func FetchUserInfo ¶
func FetchUserInfo(ctx context.Context, token *oauth2.Token, url string) (map[string]interface{}, error)
FetchUserInfo is a helper to fetch and parse user info
func GeneratePKCEChallenge ¶
GeneratePKCEChallenge generates PKCE code_verifier and code_challenge
func GenerateRandomString ¶
GenerateRandomString generates a cryptographically secure random string
func GetStringField ¶
GetStringField safely gets a string field from a map
func SignCookie ¶
SignCookie creates a signed cookie value with format: payload.timestamp.signature
func ValidateCookie ¶
ValidateCookie validates a signed cookie and returns the payload
func ValidateRedirectTo ¶
ValidateRedirectTo validates a redirect URL against trusted origins
func VerifyHMAC ¶
VerifyHMAC verifies an HMAC signature
Types ¶
type BaseProvider ¶
type BaseProvider struct {
// contains filtered or unexported fields
}
BaseProvider provides common functionality for OAuth2 providers
func NewBaseProvider ¶
func NewBaseProvider(name string, config *oauth2.Config) *BaseProvider
NewBaseProvider creates a new base provider
func (*BaseProvider) Exchange ¶
func (p *BaseProvider) Exchange(ctx context.Context, code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)
Exchange exchanges the authorization code for a token
func (*BaseProvider) GetAuthURL ¶
func (p *BaseProvider) GetAuthURL(state string, opts ...oauth2.AuthCodeOption) string
GetAuthURL returns the authorization URL
func (*BaseProvider) GetConfig ¶
func (p *BaseProvider) GetConfig() *oauth2.Config
GetConfig returns the oauth2 config
func (*BaseProvider) RequiresPKCE ¶
func (p *BaseProvider) RequiresPKCE() bool
RequiresPKCE returns whether the provider requires PKCE
type DiscordProvider ¶
type DiscordProvider struct {
*BaseProvider
}
DiscordProvider implements OAuth2Provider for Discord
func NewDiscordProvider ¶
func NewDiscordProvider(clientID, clientSecret, redirectURL string) *DiscordProvider
NewDiscordProvider creates a new Discord OAuth2 provider
func (*DiscordProvider) GetUserInfo ¶
func (p *DiscordProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error)
GetUserInfo fetches and normalizes Discord user information
type GenericProvider ¶
type GenericProvider struct {
*BaseProvider
// contains filtered or unexported fields
}
GenericProvider implements OAuth2Provider for custom OIDC/OAuth2 endpoints
func NewGenericProvider ¶
func NewGenericProvider( name, clientID, clientSecret, redirectURL, authURL, tokenURL, userInfoURL string, scopes []string, userIDField, emailField, nameField, pictureField string, ) *GenericProvider
NewGenericProvider creates a new generic OAuth2 provider
func (*GenericProvider) GetUserInfo ¶
func (p *GenericProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error)
GetUserInfo fetches and normalizes user information using custom field mapping
type GitHubProvider ¶
type GitHubProvider struct {
*BaseProvider
}
GitHubProvider implements OAuth2Provider for GitHub
func NewGitHubProvider ¶
func NewGitHubProvider(clientID, clientSecret, redirectURL string) *GitHubProvider
NewGitHubProvider creates a new GitHub OAuth2 provider
func (*GitHubProvider) GetUserInfo ¶
func (p *GitHubProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error)
GetUserInfo fetches and normalizes GitHub user information
func (*GitHubProvider) RequiresPKCE ¶
func (p *GitHubProvider) RequiresPKCE() bool
RequiresPKCE returns false for GitHub (doesn't require PKCE)
type GoogleProvider ¶
type GoogleProvider struct {
*BaseProvider
}
GoogleProvider implements OAuth2Provider for Google
func NewGoogleProvider ¶
func NewGoogleProvider(clientID, clientSecret, redirectURL string) *GoogleProvider
NewGoogleProvider creates a new Google OAuth2 provider
func (*GoogleProvider) GetUserInfo ¶
func (p *GoogleProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error)
GetUserInfo fetches and normalizes Google user information
type ProviderRegistry ¶
type ProviderRegistry struct {
// contains filtered or unexported fields
}
ProviderRegistry manages OAuth2 providers
func NewProviderRegistry ¶
func NewProviderRegistry() *ProviderRegistry
NewProviderRegistry creates a new provider registry
func (*ProviderRegistry) Get ¶
func (r *ProviderRegistry) Get(name string) (types.OAuth2Provider, bool)
Get retrieves a provider by name
func (*ProviderRegistry) GetAll ¶
func (r *ProviderRegistry) GetAll() map[string]types.OAuth2Provider
GetAll returns all registered providers
func (*ProviderRegistry) IsProviderEnabled ¶
func (r *ProviderRegistry) IsProviderEnabled(name string) bool
IsProviderEnabled checks if a provider is registered
func (*ProviderRegistry) Register ¶
func (r *ProviderRegistry) Register(name string, provider types.OAuth2Provider) error
Register registers a provider