mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2024-11-24 08:52:25 +02:00
Add AlphaOptions struct and ensure that all children have valid JSON tags
This commit is contained in:
parent
b6d6f31ac1
commit
d353d94631
31
pkg/apis/options/alpha_options.go
Normal file
31
pkg/apis/options/alpha_options.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package options
|
||||||
|
|
||||||
|
// AlphaOptions contains alpha structured configuration options.
|
||||||
|
// Usage of these options allows users to access alpha features that are not
|
||||||
|
// available as part of the primary configuration structure for OAuth2 Proxy.
|
||||||
|
//
|
||||||
|
// :::warning
|
||||||
|
// The options within this structure are considered alpha.
|
||||||
|
// They may change between releases without notice.
|
||||||
|
// :::
|
||||||
|
type AlphaOptions struct {
|
||||||
|
// Upstreams is used to configure upstream servers.
|
||||||
|
// Once a user is authenticated, requests to the server will be proxied to
|
||||||
|
// these upstream servers based on the path mappings defined in this list.
|
||||||
|
Upstreams Upstreams `json:"upstreams,omitempty"`
|
||||||
|
|
||||||
|
// InjectRequestHeaders is used to configure headers that should be added
|
||||||
|
// to requests to upstream servers.
|
||||||
|
// Headers may source values from either the authenticated user's session
|
||||||
|
// or from a static secret value.
|
||||||
|
InjectRequestHeaders []Header `json:"injectRequestHeaders,omitempty"`
|
||||||
|
|
||||||
|
// InjectResponseHeaders is used to configure headers that should be added
|
||||||
|
// to responses from the proxy.
|
||||||
|
// This is typically used when using the proxy as an external authentication
|
||||||
|
// provider in conjunction with another proxy such as NGINX and its
|
||||||
|
// auth_request module.
|
||||||
|
// Headers may source values from either the authenticated user's session
|
||||||
|
// or from a static secret value.
|
||||||
|
InjectResponseHeaders []Header `json:"injectResponseHeaders,omitempty"`
|
||||||
|
}
|
@ -10,13 +10,13 @@ import (
|
|||||||
// Only one source within the struct should be defined at any time.
|
// Only one source within the struct should be defined at any time.
|
||||||
type SecretSource struct {
|
type SecretSource struct {
|
||||||
// Value expects a base64 encoded string value.
|
// Value expects a base64 encoded string value.
|
||||||
Value []byte
|
Value []byte `json:"value,omitempty"`
|
||||||
|
|
||||||
// FromEnv expects the name of an environment variable.
|
// FromEnv expects the name of an environment variable.
|
||||||
FromEnv string
|
FromEnv string `json:"fromEnv,omitempty"`
|
||||||
|
|
||||||
// FromFile expects a path to a file containing the secret value.
|
// FromFile expects a path to a file containing the secret value.
|
||||||
FromFile string
|
FromFile string `json:"fromFile,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Duration is an alias for time.Duration so that we can ensure the marshalling
|
// Duration is an alias for time.Duration so that we can ensure the marshalling
|
||||||
|
@ -5,26 +5,26 @@ package options
|
|||||||
type Header struct {
|
type Header struct {
|
||||||
// Name is the header name to be used for this set of values.
|
// Name is the header name to be used for this set of values.
|
||||||
// Names should be unique within a list of Headers.
|
// Names should be unique within a list of Headers.
|
||||||
Name string `json:"name"`
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
// PreserveRequestValue determines whether any values for this header
|
// PreserveRequestValue determines whether any values for this header
|
||||||
// should be preserved for the request to the upstream server.
|
// should be preserved for the request to the upstream server.
|
||||||
// This option only takes effet on injected request headers.
|
// This option only takes effet on injected request headers.
|
||||||
// Defaults to false (headers that match this header will be stripped).
|
// Defaults to false (headers that match this header will be stripped).
|
||||||
PreserveRequestValue bool `json:"preserveRequestValue"`
|
PreserveRequestValue bool `json:"preserveRequestValue,omitempty"`
|
||||||
|
|
||||||
// Values contains the desired values for this header
|
// Values contains the desired values for this header
|
||||||
Values []HeaderValue `json:"values"`
|
Values []HeaderValue `json:"values,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// HeaderValue represents a single header value and the sources that can
|
// HeaderValue represents a single header value and the sources that can
|
||||||
// make up the header value
|
// make up the header value
|
||||||
type HeaderValue struct {
|
type HeaderValue struct {
|
||||||
// Allow users to load the value from a secret source
|
// Allow users to load the value from a secret source
|
||||||
*SecretSource
|
*SecretSource `json:",omitempty"`
|
||||||
|
|
||||||
// Allow users to load the value from a session claim
|
// Allow users to load the value from a session claim
|
||||||
*ClaimSource
|
*ClaimSource `json:",omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ClaimSource allows loading a header value from a claim within the session
|
// ClaimSource allows loading a header value from a claim within the session
|
||||||
@ -40,5 +40,5 @@ type ClaimSource struct {
|
|||||||
// BasicAuthPassword converts this claim into a basic auth header.
|
// BasicAuthPassword converts this claim into a basic auth header.
|
||||||
// Note the value of claim will become the basic auth username and the
|
// Note the value of claim will become the basic auth username and the
|
||||||
// basicAuthPassword will be used as the password value.
|
// basicAuthPassword will be used as the password value.
|
||||||
BasicAuthPassword *SecretSource
|
BasicAuthPassword *SecretSource `json:"basicAuthPassword,omitempty"`
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,11 @@ type Upstreams []Upstream
|
|||||||
type Upstream struct {
|
type Upstream struct {
|
||||||
// ID should be a unique identifier for the upstream.
|
// ID should be a unique identifier for the upstream.
|
||||||
// This value is required for all upstreams.
|
// This value is required for all upstreams.
|
||||||
ID string `json:"id"`
|
ID string `json:"id,omitempty"`
|
||||||
|
|
||||||
// Path is used to map requests to the upstream server.
|
// Path is used to map requests to the upstream server.
|
||||||
// The closest match will take precedence and all Paths must be unique.
|
// The closest match will take precedence and all Paths must be unique.
|
||||||
Path string `json:"path"`
|
Path string `json:"path,omitempty"`
|
||||||
|
|
||||||
// The URI of the upstream server. This may be an HTTP(S) server of a File
|
// The URI of the upstream server. This may be an HTTP(S) server of a File
|
||||||
// based URL. It may include a path, in which case all requests will be served
|
// based URL. It may include a path, in which case all requests will be served
|
||||||
@ -24,19 +24,19 @@ type Upstream struct {
|
|||||||
// - file://host/path
|
// - file://host/path
|
||||||
// If the URI's path is "/base" and the incoming request was for "/dir",
|
// If the URI's path is "/base" and the incoming request was for "/dir",
|
||||||
// the upstream request will be for "/base/dir".
|
// the upstream request will be for "/base/dir".
|
||||||
URI string `json:"uri"`
|
URI string `json:"uri,omitempty"`
|
||||||
|
|
||||||
// InsecureSkipTLSVerify will skip TLS verification of upstream HTTPS hosts.
|
// InsecureSkipTLSVerify will skip TLS verification of upstream HTTPS hosts.
|
||||||
// This option is insecure and will allow potential Man-In-The-Middle attacks
|
// This option is insecure and will allow potential Man-In-The-Middle attacks
|
||||||
// betweem OAuth2 Proxy and the usptream server.
|
// betweem OAuth2 Proxy and the usptream server.
|
||||||
// Defaults to false.
|
// Defaults to false.
|
||||||
InsecureSkipTLSVerify bool `json:"insecureSkipTLSVerify"`
|
InsecureSkipTLSVerify bool `json:"insecureSkipTLSVerify,omitempty"`
|
||||||
|
|
||||||
// Static will make all requests to this upstream have a static response.
|
// Static will make all requests to this upstream have a static response.
|
||||||
// The response will have a body of "Authenticated" and a response code
|
// The response will have a body of "Authenticated" and a response code
|
||||||
// matching StaticCode.
|
// matching StaticCode.
|
||||||
// If StaticCode is not set, the response will return a 200 response.
|
// If StaticCode is not set, the response will return a 200 response.
|
||||||
Static bool `json:"static"`
|
Static bool `json:"static,omitempty"`
|
||||||
|
|
||||||
// StaticCode determines the response code for the Static response.
|
// StaticCode determines the response code for the Static response.
|
||||||
// This option can only be used with Static enabled.
|
// This option can only be used with Static enabled.
|
||||||
@ -50,9 +50,9 @@ type Upstream struct {
|
|||||||
// PassHostHeader determines whether the request host header should be proxied
|
// PassHostHeader determines whether the request host header should be proxied
|
||||||
// to the upstream server.
|
// to the upstream server.
|
||||||
// Defaults to true.
|
// Defaults to true.
|
||||||
PassHostHeader *bool `json:"passHostHeader"`
|
PassHostHeader *bool `json:"passHostHeader,omitempty"`
|
||||||
|
|
||||||
// ProxyWebSockets enables proxying of websockets to upstream servers
|
// ProxyWebSockets enables proxying of websockets to upstream servers
|
||||||
// Defaults to true.
|
// Defaults to true.
|
||||||
ProxyWebSockets *bool `json:"proxyWebSockets"`
|
ProxyWebSockets *bool `json:"proxyWebSockets,omitempty"`
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user