Introduce ProxyRawPath flag
Setting this flag will configure the upstream proxy to pass encoded urls as-is.
This commit is contained in:
		
							parent
							
								
									733b3fe642
								
							
						
					
					
						commit
						d51556515e
					
				|  | @ -35,6 +35,7 @@ | ||||||
| - [#1317](https://github.com/oauth2-proxy/oauth2-proxy/pull/1317) Fix incorrect `</form>` tag on the sing_in page when *not* using a custom template (@jord1e) | - [#1317](https://github.com/oauth2-proxy/oauth2-proxy/pull/1317) Fix incorrect `</form>` tag on the sing_in page when *not* using a custom template (@jord1e) | ||||||
| - [#1330](https://github.com/oauth2-proxy/oauth2-proxy/pull/1330) Allow specifying URL as input for custom sign in logo (@MaikuMori) | - [#1330](https://github.com/oauth2-proxy/oauth2-proxy/pull/1330) Allow specifying URL as input for custom sign in logo (@MaikuMori) | ||||||
| - [#1357](https://github.com/oauth2-proxy/oauth2-proxy/pull/1357) Fix unsafe access to session variable (@harzallah) | - [#1357](https://github.com/oauth2-proxy/oauth2-proxy/pull/1357) Fix unsafe access to session variable (@harzallah) | ||||||
|  | - [#997](https://github.com/oauth2-proxy/oauth2-proxy/pull/997) Allow passing the raw url path when proxying upstream requests - e.g. /%2F/ (@FStelzer) | ||||||
| 
 | 
 | ||||||
| # V7.1.3 | # V7.1.3 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -27,6 +27,7 @@ client_secret="b2F1dGgyLXByb3h5LWNsaWVudC1zZWNyZXQK" | ||||||
| 
 | 
 | ||||||
| 	const testAlphaConfig = ` | 	const testAlphaConfig = ` | ||||||
| upstreams: | upstreams: | ||||||
|  |   proxyrawpath: false | ||||||
|   configs: |   configs: | ||||||
|   - id: / |   - id: / | ||||||
|     path: / |     path: / | ||||||
|  |  | ||||||
|  | @ -9,6 +9,10 @@ const ( | ||||||
| 
 | 
 | ||||||
| // Upstreams is a collection of definitions for upstream servers.
 | // Upstreams is a collection of definitions for upstream servers.
 | ||||||
| type Upstreams struct { | type Upstreams struct { | ||||||
|  | 	// ProxyRawPath will pass the raw url path to upstream allowing for url's
 | ||||||
|  | 	// like: "/%2F/" which would otherwise be redirected to "/"
 | ||||||
|  | 	ProxyRawPath bool `json:"proxyRawPath,omitempty"` | ||||||
|  | 
 | ||||||
| 	// Upstream represents the configuration for an upstream server.
 | 	// Upstream represents the configuration for an upstream server.
 | ||||||
| 	// Requests will be proxied to this upstream if the path matches the request path.
 | 	// Requests will be proxied to this upstream if the path matches the request path.
 | ||||||
| 	Configs []Upstream `json:"configs,omitempty"` | 	Configs []Upstream `json:"configs,omitempty"` | ||||||
|  |  | ||||||
|  | @ -27,6 +27,10 @@ func NewProxy(upstreams options.Upstreams, sigData *options.SignatureData, write | ||||||
| 		serveMux: mux.NewRouter(), | 		serveMux: mux.NewRouter(), | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	if upstreams.ProxyRawPath { | ||||||
|  | 		m.serveMux.UseEncodedPath() | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	for _, upstream := range sortByPathLongest(upstreams.Configs) { | 	for _, upstream := range sortByPathLongest(upstreams.Configs) { | ||||||
| 		if upstream.Static { | 		if upstream.Static { | ||||||
| 			if err := m.registerStaticResponseHandler(upstream, writer); err != nil { | 			if err := m.registerStaticResponseHandler(upstream, writer); err != nil { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue