diff --git a/README.md b/README.md index 03a39bf..3cd619d 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,14 @@ GoMFT is a web-based managed file transfer application built with Go, leveraging - **Transfer Configurations**: Full control over source and destination connection parameters - **Job Management**: Create, edit, and monitor transfer jobs with scheduling - **Security**: Role-based access control with admin-managed user accounts and secure password management +- **Authentication Providers**: Flexible authentication options: + - Built-in email/password authentication + - Authentik integration for enterprise SSO + - OpenID Connect (OIDC) support for standard identity providers + - OAuth2 integration for popular providers (Google, GitHub, etc.) + - Multiple provider support with fallback options + - Automatic user provisioning from external providers + - Role mapping from external identity providers - **Password Recovery**: Self-service password reset via email with secure token-based authentication - **User Profile Management**: Personal settings including theme preferences - **Modern UI**: Built with Templ, HTMX and Tailwind CSS for a responsive experience @@ -416,19 +424,57 @@ Log files contain detailed information about file transfers, job execution, and ### User Management -GoMFT uses a role-based access control system: +GoMFT uses a role-based access control system with flexible authentication options: - **Administrators**: Can create and manage users, access all features - **Regular Users**: Can manage transfers and view history -User management features: -- Only administrators can create new user accounts -- User passwords are securely hashed with bcrypt -- Password history tracking prevents reuse of recent passwords -- Account lockout after multiple failed login attempts -- Self-service password reset via secure email links -- JWT-based authentication with tokens -- User theme preference settings (light/dark) +#### Authentication Options + +1. **Built-in Authentication**: + - Email/password login with secure password hashing + - JWT-based session management + - Password history tracking + - Account lockout protection + - Self-service password reset + +2. **External Authentication Providers**: + - **Authentik Integration**: + - Enterprise-grade SSO capabilities + - Automatic user provisioning + - Role synchronization + - Group mapping support + - Secure token exchange + + - **OpenID Connect (OIDC)**: + - Standard-compliant identity provider support + - Automatic user creation and updates + - Role mapping from OIDC claims + - Multiple provider support + - Secure token validation + + - **OAuth2 Providers**: + - Google authentication + - GitHub integration + - Other OAuth2-compliant providers + - Custom provider configuration + - Automatic profile synchronization + +3. **Security Features**: + - Secure password hashing with bcrypt + - JWT-based authentication with tokens + - Password history tracking prevents reuse + - Account lockout after failed attempts + - Two-factor authentication support + - Session management and timeout + - Secure token storage and handling + +4. **User Profile Management**: + - Theme preferences (light/dark mode) + - Profile information updates + - Password change functionality + - Two-factor authentication setup + - External account linking ### Two-Factor Authentication (2FA) Implementation diff --git a/go.mod b/go.mod index 950c473..ca18da0 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,6 @@ require ( github.com/joho/godotenv v1.5.1 github.com/pquerna/otp v1.4.0 github.com/robfig/cron/v3 v3.0.1 - github.com/stretchr/testify v1.10.0 golang.org/x/crypto v0.36.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gorm.io/gorm v1.25.12 @@ -23,7 +22,6 @@ require ( github.com/bytedance/sonic v1.12.9 // indirect github.com/bytedance/sonic/loader v0.2.3 // indirect github.com/cloudwego/base64x v0.1.5 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/gabriel-vasile/mimetype v1.4.8 // indirect github.com/gin-contrib/sse v1.0.0 // indirect @@ -45,9 +43,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/stretchr/objx v0.5.2 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect golang.org/x/arch v0.14.0 // indirect diff --git a/go.sum b/go.sum index b5f017b..8c21618 100644 --- a/go.sum +++ b/go.sum @@ -91,7 +91,6 @@ github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzG github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=