fix: self signed certificate handling
This commit is contained in:
		
							parent
							
								
									cda641473f
								
							
						
					
					
						commit
						8fd7312a90
					
				|  | @ -7,20 +7,22 @@ import ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type userAgentTransport struct { | type userAgentTransport struct { | ||||||
| 	next      http.RoundTripper | 	Next      http.RoundTripper | ||||||
| 	userAgent string | 	userAgent string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (t *userAgentTransport) RoundTrip(req *http.Request) (*http.Response, error) { | func (t *userAgentTransport) RoundTrip(req *http.Request) (*http.Response, error) { | ||||||
| 	r := req.Clone(req.Context()) | 	r := req.Clone(req.Context()) | ||||||
| 	setDefaultUserAgent(r.Header, t.userAgent) | 	setDefaultUserAgent(r.Header, t.userAgent) | ||||||
| 	return t.next.RoundTrip(r) | 	return t.Next.RoundTrip(r) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var DefaultHTTPClient = &http.Client{Transport: &userAgentTransport{ | var DefaultHTTPClient = &http.Client{Transport: &DefaultTransport} | ||||||
| 	next:      http.DefaultTransport, | 
 | ||||||
|  | var DefaultTransport = userAgentTransport{ | ||||||
|  | 	Next:      http.DefaultTransport, | ||||||
| 	userAgent: "oauth2-proxy/" + version.VERSION, | 	userAgent: "oauth2-proxy/" + version.VERSION, | ||||||
| }} | } | ||||||
| 
 | 
 | ||||||
| func setDefaultUserAgent(header http.Header, userAgent string) { | func setDefaultUserAgent(header http.Header, userAgent string) { | ||||||
| 	if header != nil && len(header.Values("User-Agent")) == 0 { | 	if header != nil && len(header.Values("User-Agent")) == 0 { | ||||||
|  |  | ||||||
|  | @ -13,6 +13,7 @@ import ( | ||||||
| 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/ip" | 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/ip" | ||||||
| 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger" | 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger" | ||||||
| 	internaloidc "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/providers/oidc" | 	internaloidc "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/providers/oidc" | ||||||
|  | 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests" | ||||||
| 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/util" | 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/util" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -30,20 +31,20 @@ func Validate(o *options.Options) error { | ||||||
| 	msgs = parseSignatureKey(o, msgs) | 	msgs = parseSignatureKey(o, msgs) | ||||||
| 
 | 
 | ||||||
| 	if o.SSLInsecureSkipVerify { | 	if o.SSLInsecureSkipVerify { | ||||||
| 		insecureTransport := &http.Transport{ | 		transport := requests.DefaultTransport.Next.(*http.Transport).Clone() | ||||||
| 			TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // #nosec G402 -- InsecureSkipVerify is a configurable option we allow
 | 		transport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true} // #nosec G402 -- InsecureSkipVerify is a configurable option we allow
 | ||||||
| 		} | 
 | ||||||
| 		http.DefaultClient = &http.Client{Transport: insecureTransport} | 		requests.DefaultHTTPClient = &http.Client{Transport: transport} | ||||||
| 	} else if len(o.Providers[0].CAFiles) > 0 { | 	} else if len(o.Providers[0].CAFiles) > 0 { | ||||||
| 		pool, err := util.GetCertPool(o.Providers[0].CAFiles, o.Providers[0].UseSystemTrustStore) | 		pool, err := util.GetCertPool(o.Providers[0].CAFiles, o.Providers[0].UseSystemTrustStore) | ||||||
| 		if err == nil { | 		if err == nil { | ||||||
| 			transport := http.DefaultTransport.(*http.Transport).Clone() | 			transport := requests.DefaultTransport.Next.(*http.Transport).Clone() | ||||||
| 			transport.TLSClientConfig = &tls.Config{ | 			transport.TLSClientConfig = &tls.Config{ | ||||||
| 				RootCAs:    pool, | 				RootCAs:    pool, | ||||||
| 				MinVersion: tls.VersionTLS12, | 				MinVersion: tls.VersionTLS12, | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			http.DefaultClient = &http.Client{Transport: transport} | 			requests.DefaultHTTPClient = &http.Client{Transport: transport} | ||||||
| 		} else { | 		} else { | ||||||
| 			msgs = append(msgs, fmt.Sprintf("unable to load provider CA file(s): %v", err)) | 			msgs = append(msgs, fmt.Sprintf("unable to load provider CA file(s): %v", err)) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue