mirror of
				https://github.com/steveiliop56/tinyauth.git
				synced 2025-10-30 21:55:43 +00:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			v3.6.1
			...
			feat/untru
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | f441645e36 | ||
|   | 35ae69791c | ||
|   | 1dfa54305f | 
| @@ -30,3 +30,4 @@ APP_TITLE=Tinyauth SSO | |||||||
| FORGOT_PASSWORD_MESSAGE=Some message about resetting the password | FORGOT_PASSWORD_MESSAGE=Some message about resetting the password | ||||||
| OAUTH_AUTO_REDIRECT=none | OAUTH_AUTO_REDIRECT=none | ||||||
| BACKGROUND_IMAGE=some_image_url | BACKGROUND_IMAGE=some_image_url | ||||||
|  | GENERIC_SKIP_SSL=false | ||||||
| @@ -79,6 +79,7 @@ var rootCmd = &cobra.Command{ | |||||||
| 			GenericAuthURL:      config.GenericAuthURL, | 			GenericAuthURL:      config.GenericAuthURL, | ||||||
| 			GenericTokenURL:     config.GenericTokenURL, | 			GenericTokenURL:     config.GenericTokenURL, | ||||||
| 			GenericUserURL:      config.GenericUserURL, | 			GenericUserURL:      config.GenericUserURL, | ||||||
|  | 			GenericSkipSSL:      config.GenericSkipSSL, | ||||||
| 			AppURL:              config.AppURL, | 			AppURL:              config.AppURL, | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -197,6 +198,7 @@ func init() { | |||||||
| 	rootCmd.Flags().String("generic-token-url", "", "Generic OAuth token URL.") | 	rootCmd.Flags().String("generic-token-url", "", "Generic OAuth token URL.") | ||||||
| 	rootCmd.Flags().String("generic-user-url", "", "Generic OAuth user info URL.") | 	rootCmd.Flags().String("generic-user-url", "", "Generic OAuth user info URL.") | ||||||
| 	rootCmd.Flags().String("generic-name", "Generic", "Generic OAuth provider name.") | 	rootCmd.Flags().String("generic-name", "Generic", "Generic OAuth provider name.") | ||||||
|  | 	rootCmd.Flags().Bool("generic-skip-ssl", false, "Skip SSL verification for the generic OAuth provider.") | ||||||
| 	rootCmd.Flags().Bool("disable-continue", false, "Disable continue screen and redirect to app directly.") | 	rootCmd.Flags().Bool("disable-continue", false, "Disable continue screen and redirect to app directly.") | ||||||
| 	rootCmd.Flags().String("oauth-whitelist", "", "Comma separated list of email addresses to whitelist when using OAuth.") | 	rootCmd.Flags().String("oauth-whitelist", "", "Comma separated list of email addresses to whitelist when using OAuth.") | ||||||
| 	rootCmd.Flags().String("oauth-auto-redirect", "none", "Auto redirect to the specified OAuth provider if configured. (available providers: github, google, generic)") | 	rootCmd.Flags().String("oauth-auto-redirect", "none", "Auto redirect to the specified OAuth provider if configured. (available providers: github, google, generic)") | ||||||
| @@ -231,6 +233,7 @@ func init() { | |||||||
| 	viper.BindEnv("generic-token-url", "GENERIC_TOKEN_URL") | 	viper.BindEnv("generic-token-url", "GENERIC_TOKEN_URL") | ||||||
| 	viper.BindEnv("generic-user-url", "GENERIC_USER_URL") | 	viper.BindEnv("generic-user-url", "GENERIC_USER_URL") | ||||||
| 	viper.BindEnv("generic-name", "GENERIC_NAME") | 	viper.BindEnv("generic-name", "GENERIC_NAME") | ||||||
|  | 	viper.BindEnv("generic-skip-ssl", "GENERIC_SKIP_SSL") | ||||||
| 	viper.BindEnv("disable-continue", "DISABLE_CONTINUE") | 	viper.BindEnv("disable-continue", "DISABLE_CONTINUE") | ||||||
| 	viper.BindEnv("oauth-whitelist", "OAUTH_WHITELIST") | 	viper.BindEnv("oauth-whitelist", "OAUTH_WHITELIST") | ||||||
| 	viper.BindEnv("oauth-auto-redirect", "OAUTH_AUTO_REDIRECT") | 	viper.BindEnv("oauth-auto-redirect", "OAUTH_AUTO_REDIRECT") | ||||||
|   | |||||||
| @@ -3,15 +3,17 @@ package oauth | |||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"crypto/rand" | 	"crypto/rand" | ||||||
|  | 	"crypto/tls" | ||||||
| 	"encoding/base64" | 	"encoding/base64" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  |  | ||||||
| 	"golang.org/x/oauth2" | 	"golang.org/x/oauth2" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func NewOAuth(config oauth2.Config) *OAuth { | func NewOAuth(config oauth2.Config, insecureSkipVerify bool) *OAuth { | ||||||
| 	return &OAuth{ | 	return &OAuth{ | ||||||
| 		Config:             config, | 		Config:             config, | ||||||
|  | 		InsecureSkipVerify: insecureSkipVerify, | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -20,11 +22,29 @@ type OAuth struct { | |||||||
| 	Context            context.Context | 	Context            context.Context | ||||||
| 	Token              *oauth2.Token | 	Token              *oauth2.Token | ||||||
| 	Verifier           string | 	Verifier           string | ||||||
|  | 	InsecureSkipVerify bool | ||||||
| } | } | ||||||
|  |  | ||||||
| func (oauth *OAuth) Init() { | func (oauth *OAuth) Init() { | ||||||
| 	// Create a new context and verifier | 	// Create transport with TLS | ||||||
|  | 	transport := &http.Transport{ | ||||||
|  | 		TLSClientConfig: &tls.Config{ | ||||||
|  | 			InsecureSkipVerify: oauth.InsecureSkipVerify, | ||||||
|  | 			MinVersion:         tls.VersionTLS12, | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Create a new context | ||||||
| 	oauth.Context = context.Background() | 	oauth.Context = context.Background() | ||||||
|  |  | ||||||
|  | 	// Create the HTTP client with the transport | ||||||
|  | 	httpClient := &http.Client{ | ||||||
|  | 		Transport: transport, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Set the HTTP client in the context | ||||||
|  | 	oauth.Context = context.WithValue(oauth.Context, oauth2.HTTPClient, httpClient) | ||||||
|  | 	// Create the verifier | ||||||
| 	oauth.Verifier = oauth2.GenerateVerifier() | 	oauth.Verifier = oauth2.GenerateVerifier() | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -36,7 +36,7 @@ func (providers *Providers) Init() { | |||||||
| 			RedirectURL:  fmt.Sprintf("%s/api/oauth/callback/github", providers.Config.AppURL), | 			RedirectURL:  fmt.Sprintf("%s/api/oauth/callback/github", providers.Config.AppURL), | ||||||
| 			Scopes:       GithubScopes(), | 			Scopes:       GithubScopes(), | ||||||
| 			Endpoint:     endpoints.GitHub, | 			Endpoint:     endpoints.GitHub, | ||||||
| 		}) | 		}, false) | ||||||
|  |  | ||||||
| 		// Initialize the oauth provider | 		// Initialize the oauth provider | ||||||
| 		providers.Github.Init() | 		providers.Github.Init() | ||||||
| @@ -53,7 +53,7 @@ func (providers *Providers) Init() { | |||||||
| 			RedirectURL:  fmt.Sprintf("%s/api/oauth/callback/google", providers.Config.AppURL), | 			RedirectURL:  fmt.Sprintf("%s/api/oauth/callback/google", providers.Config.AppURL), | ||||||
| 			Scopes:       GoogleScopes(), | 			Scopes:       GoogleScopes(), | ||||||
| 			Endpoint:     endpoints.Google, | 			Endpoint:     endpoints.Google, | ||||||
| 		}) | 		}, false) | ||||||
|  |  | ||||||
| 		// Initialize the oauth provider | 		// Initialize the oauth provider | ||||||
| 		providers.Google.Init() | 		providers.Google.Init() | ||||||
| @@ -73,7 +73,7 @@ func (providers *Providers) Init() { | |||||||
| 				AuthURL:  providers.Config.GenericAuthURL, | 				AuthURL:  providers.Config.GenericAuthURL, | ||||||
| 				TokenURL: providers.Config.GenericTokenURL, | 				TokenURL: providers.Config.GenericTokenURL, | ||||||
| 			}, | 			}, | ||||||
| 		}) | 		}, providers.Config.GenericSkipSSL) | ||||||
|  |  | ||||||
| 		// Initialize the oauth provider | 		// Initialize the oauth provider | ||||||
| 		providers.Generic.Init() | 		providers.Generic.Init() | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ type Config struct { | |||||||
| 	GenericTokenURL         string `mapstructure:"generic-token-url"` | 	GenericTokenURL         string `mapstructure:"generic-token-url"` | ||||||
| 	GenericUserURL          string `mapstructure:"generic-user-url"` | 	GenericUserURL          string `mapstructure:"generic-user-url"` | ||||||
| 	GenericName             string `mapstructure:"generic-name"` | 	GenericName             string `mapstructure:"generic-name"` | ||||||
|  | 	GenericSkipSSL          bool   `mapstructure:"generic-skip-ssl"` | ||||||
| 	DisableContinue         bool   `mapstructure:"disable-continue"` | 	DisableContinue         bool   `mapstructure:"disable-continue"` | ||||||
| 	OAuthWhitelist          string `mapstructure:"oauth-whitelist"` | 	OAuthWhitelist          string `mapstructure:"oauth-whitelist"` | ||||||
| 	OAuthAutoRedirect       string `mapstructure:"oauth-auto-redirect" validate:"oneof=none github google generic"` | 	OAuthAutoRedirect       string `mapstructure:"oauth-auto-redirect" validate:"oneof=none github google generic"` | ||||||
| @@ -62,6 +63,7 @@ type OAuthConfig struct { | |||||||
| 	GenericAuthURL      string | 	GenericAuthURL      string | ||||||
| 	GenericTokenURL     string | 	GenericTokenURL     string | ||||||
| 	GenericUserURL      string | 	GenericUserURL      string | ||||||
|  | 	GenericSkipSSL      bool | ||||||
| 	AppURL              string | 	AppURL              string | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user