mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-01 11:26:29 +02:00
config: add support for set_response_headers in a policy (#2171)
* config: add support for set_response_headers in a policy * docs: add note about precedence
This commit is contained in:
parent
129df47f9c
commit
69576cffe4
6 changed files with 514 additions and 471 deletions
|
@ -276,6 +276,7 @@ func (b *Builder) buildPolicyRoutes(options *config.Options, domain string) ([]*
|
||||||
Metadata: &envoy_config_core_v3.Metadata{},
|
Metadata: &envoy_config_core_v3.Metadata{},
|
||||||
RequestHeadersToAdd: toEnvoyHeaders(policy.SetRequestHeaders),
|
RequestHeadersToAdd: toEnvoyHeaders(policy.SetRequestHeaders),
|
||||||
RequestHeadersToRemove: getRequestHeadersToRemove(options, &policy),
|
RequestHeadersToRemove: getRequestHeadersToRemove(options, &policy),
|
||||||
|
ResponseHeadersToAdd: toEnvoyHeaders(policy.SetResponseHeaders),
|
||||||
}
|
}
|
||||||
if policy.Redirect != nil {
|
if policy.Redirect != nil {
|
||||||
action, err := b.buildPolicyRouteRedirectAction(policy.Redirect)
|
action, err := b.buildPolicyRouteRedirectAction(policy.Redirect)
|
||||||
|
|
|
@ -151,6 +151,9 @@ type Policy struct {
|
||||||
|
|
||||||
// RewriteResponseHeaders rewrites response headers. This can be used to change the Location header.
|
// RewriteResponseHeaders rewrites response headers. This can be used to change the Location header.
|
||||||
RewriteResponseHeaders []RewriteHeader `mapstructure:"rewrite_response_headers" yaml:"rewrite_response_headers,omitempty" json:"rewrite_response_headers,omitempty"` //nolint
|
RewriteResponseHeaders []RewriteHeader `mapstructure:"rewrite_response_headers" yaml:"rewrite_response_headers,omitempty" json:"rewrite_response_headers,omitempty"` //nolint
|
||||||
|
|
||||||
|
// SetResponseHeaders sets response headers.
|
||||||
|
SetResponseHeaders map[string]string `mapstructure:"set_response_headers" yaml:"set_response_headers,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RewriteHeader is a policy configuration option to rewrite an HTTP header.
|
// RewriteHeader is a policy configuration option to rewrite an HTTP header.
|
||||||
|
@ -219,6 +222,7 @@ func NewPolicyFromProto(pb *configpb.Route) (*Policy, error) {
|
||||||
PreserveHostHeader: pb.GetPreserveHostHeader(),
|
PreserveHostHeader: pb.GetPreserveHostHeader(),
|
||||||
PassIdentityHeaders: pb.GetPassIdentityHeaders(),
|
PassIdentityHeaders: pb.GetPassIdentityHeaders(),
|
||||||
KubernetesServiceAccountToken: pb.GetKubernetesServiceAccountToken(),
|
KubernetesServiceAccountToken: pb.GetKubernetesServiceAccountToken(),
|
||||||
|
SetResponseHeaders: pb.GetSetResponseHeaders(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if pb.Redirect.IsSet() {
|
if pb.Redirect.IsSet() {
|
||||||
|
@ -321,6 +325,7 @@ func (p *Policy) ToProto() (*configpb.Route, error) {
|
||||||
PassIdentityHeaders: p.PassIdentityHeaders,
|
PassIdentityHeaders: p.PassIdentityHeaders,
|
||||||
KubernetesServiceAccountToken: p.KubernetesServiceAccountToken,
|
KubernetesServiceAccountToken: p.KubernetesServiceAccountToken,
|
||||||
Policies: sps,
|
Policies: sps,
|
||||||
|
SetResponseHeaders: p.SetResponseHeaders,
|
||||||
}
|
}
|
||||||
if p.Redirect != nil {
|
if p.Redirect != nil {
|
||||||
pb.Redirect = &configpb.RouteRedirect{
|
pb.Redirect = &configpb.RouteRedirect{
|
||||||
|
|
|
@ -1372,6 +1372,14 @@ Remove Request Headers allows you to remove given request headers. This can be u
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Set Response Headers
|
||||||
|
- Config File Key: `set_response_headers`
|
||||||
|
- Type: map of `strings` key value pairs
|
||||||
|
- Optional
|
||||||
|
|
||||||
|
Set Response Headers allows you to set static values for the given response headers. These headers will take precedence over the global `set_response_headers`.
|
||||||
|
|
||||||
|
|
||||||
### Rewrite Response Headers
|
### Rewrite Response Headers
|
||||||
- Config File Key: `rewrite_response_headers`
|
- Config File Key: `rewrite_response_headers`
|
||||||
- Type: `object`
|
- Type: `object`
|
||||||
|
|
|
@ -1507,6 +1507,14 @@ settings:
|
||||||
- X-Email
|
- X-Email
|
||||||
- X-Username
|
- X-Username
|
||||||
```
|
```
|
||||||
|
- name: "Set Response Headers"
|
||||||
|
keys: ["set_response_headers"]
|
||||||
|
attributes: |
|
||||||
|
- Config File Key: `set_response_headers`
|
||||||
|
- Type: map of `strings` key value pairs
|
||||||
|
- Optional
|
||||||
|
doc: |
|
||||||
|
Set Response Headers allows you to set static values for the given response headers. These headers will take precedence over the global `set_response_headers`.
|
||||||
- name: "Rewrite Response Headers"
|
- name: "Rewrite Response Headers"
|
||||||
keys: ["rewrite_response_headers"]
|
keys: ["rewrite_response_headers"]
|
||||||
attributes: |
|
attributes: |
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -82,6 +82,7 @@ message Route {
|
||||||
|
|
||||||
map<string, string> set_request_headers = 22;
|
map<string, string> set_request_headers = 22;
|
||||||
repeated string remove_request_headers = 23;
|
repeated string remove_request_headers = 23;
|
||||||
|
map<string, string> set_response_headers = 41;
|
||||||
repeated RouteRewriteHeader rewrite_response_headers = 40;
|
repeated RouteRewriteHeader rewrite_response_headers = 40;
|
||||||
|
|
||||||
bool preserve_host_header = 24;
|
bool preserve_host_header = 24;
|
||||||
|
|
Loading…
Add table
Reference in a new issue