Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

smhanov/auth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

58 Commits

Repository files navigation

auth

Package auth provides a complete, self-hosted user authentication system for Go web applications.

Go Reference

Overview

This library aims to provide "boring" but essential user authentication infrastructure, saving you from rewriting the same login logic for every project. It is designed to be dropped into your existing web application with minimal configuration.

Key Benefits

  • Comprehensive: Handles Email/Password, OAuth (Google, Facebook, Twitter), and Enterprise SAML SSO out of the box.
  • Extensible: Pluggable OAuth provider API lets you add any OAuth2 provider (GitHub, GitLab, etc.) with a simple interface.
  • Secure: Includes built-in rate limiting, secure session management, and password hashing standards.
  • Self-Hosted: You own your data. Supports SQLite and PostgreSQL via sqlx.
  • Complete Flows: Includes ready-to-use flows for password resets, email updates, and account creation.

Adding Custom OAuth Providers

Implement the OAuthProvider interface to add any OAuth2 provider:

type GitHubProvider struct {
 ClientID, ClientSecret string
}
func (p *GitHubProvider) Name() string { return "github" }
func (p *GitHubProvider) UsePKCE() bool { return false }
func (p *GitHubProvider) OAuthConfig() *oauth2.Config {
 return &oauth2.Config{
 ClientID: p.ClientID,
 ClientSecret: p.ClientSecret,
 Scopes: []string{"user:email"},
 Endpoint: oauth2.Endpoint{
 AuthURL: "https://github.com/login/oauth/authorize",
 TokenURL: "https://github.com/login/oauth/access_token",
 },
 }
}
func (p *GitHubProvider) FetchIdentity(ctx context.Context, client *http.Client) (string, string, error) {
 // Use client to call provider API and return (userID, email, error)
}

Register it in settings:

settings.OAuthProviders = []auth.OAuthProvider{
 &GitHubProvider{ClientID: "...", ClientSecret: "..."},
}

Routes are automatically created: /user/oauth/login/github and /user/oauth/callback/github.

Documentation

For full documentation, tutorials, and API reference, please visit the official Go docs:

https://pkg.go.dev/github.com/smhanov/auth

Installation

go get github.com/smhanov/auth

Acknowledgements

Audited by codepathfinder.dev. Trace vulnerabilities across your codebase.

About

Boring user authentication code for golang

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /