Get desktop application:
View/edit binary Protocol Buffers messages
A generic interface for performing authorization check on incoming requests to a networked service.
Performs authorization check based on the attributes associated with the incoming request, and returns status `OK` or not `OK`.
The request attributes.
Intended for gRPC and Network Authorization servers ``only``.
Status ``OK`` allows the request. Any other status indicates the request should be denied, and for HTTP filter, if not overridden by :ref:`denied HTTP response status <envoy_v3_api_field_service.auth.v3.DeniedHttpResponse.status>` Envoy sends ``403 Forbidden`` HTTP status code by default.
An message that contains HTTP response attributes. This message is used when the authorization service needs to send custom responses to the downstream client or, to modify/add request headers being dispatched to the upstream.
Supplies http attributes for a denied response.
Supplies http attributes for an ok response.
Optional response metadata that will be emitted as dynamic metadata to be consumed by the next filter. This metadata lives in a namespace specified by the canonical name of extension filter that requires it: - :ref:`envoy.filters.http.ext_authz <config_http_filters_ext_authz_dynamic_metadata>` for HTTP filter. - :ref:`envoy.filters.network.ext_authz <config_network_filters_ext_authz_dynamic_metadata>` for network filter.
An attribute is a piece of metadata that describes an activity on a network. For example, the size of an HTTP request, or the status code of an HTTP response. Each attribute has a type and a name, which is logically defined as a proto message field of the ``AttributeContext``. The ``AttributeContext`` is a collection of individual attributes supported by Envoy authorization system. [#comment: The following items are left out of this proto Request.Auth field for JWTs Request.Api for api management Origin peer that originated the request Caching Protocol request_context return values to inject back into the filter chain peer.claims -- from X.509 extensions Configuration - field mask to send - which return values from request_context are copied back - which return values are copied into request_headers] [#next-free-field: 14]
Used in:
The source of a network activity, such as starting a TCP connection. In a multi hop network activity, the source represents the sender of the last hop.
The destination of a network activity, such as accepting a TCP connection. In a multi hop network activity, the destination represents the receiver of the last hop.
Represents a network request, such as an HTTP request.
This is analogous to http_request.headers, however these contents will not be sent to the upstream server. Context_extensions provide an extension mechanism for sending additional information to the auth server without modifying the proto definition. It maps to the internal opaque context in the filter chain.
Dynamic metadata associated with the request.
Metadata associated with the selected route.
TLS session details of the underlying connection. This is not populated by default and will be populated only if the ext_authz filter has been specifically configured to include this information. For HTTP ext_authz, that requires :ref:`include_tls_session <config_http_filters_ext_authz>` to be set to true. For network ext_authz, that requires :ref:`include_tls_session <config_network_filters_ext_authz>` to be set to true.
This message defines attributes for an HTTP request. HTTP/1.x, HTTP/2, gRPC are all considered as HTTP requests. [#next-free-field: 14]
Used in:
The unique ID for a request, which can be propagated to downstream systems. The ID should have low probability of collision within a single day for a specific service. For HTTP requests, it should be X-Request-ID or equivalent.
The HTTP request method, such as ``GET``, ``POST``.
The HTTP request headers. If multiple headers share the same key, they must be merged according to the HTTP spec. All header keys must be lower-cased, because HTTP header keys are case-insensitive. Header value is encoded as UTF-8 string. Non-UTF-8 characters will be replaced by "!". This field will not be set if :ref:`encode_raw_headers <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.encode_raw_headers>` is set to true.
A list of the raw HTTP request headers. This is used instead of :ref:`headers <envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.headers>` when :ref:`encode_raw_headers <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.encode_raw_headers>` is set to true. Note that this is not actually a map type. ``header_map`` contains a single repeated field ``headers``. Here, only the ``key`` and ``raw_value`` fields will be populated for each HeaderValue, and that is only when :ref:`encode_raw_headers <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.encode_raw_headers>` is set to true. Also, unlike the :ref:`headers <envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.headers>` field, headers with the same key are not combined into a single comma separated header.
The request target, as it appears in the first line of the HTTP request. This includes the URL path and query-string. No decoding is performed.
The HTTP request ``Host`` or ``:authority`` header value.
The HTTP URL scheme, such as ``http`` and ``https``.
This field is always empty, and exists for compatibility reasons. The HTTP URL query is included in ``path`` field.
This field is always empty, and exists for compatibility reasons. The URL fragment is not submitted as part of HTTP requests; it is unknowable.
The HTTP request size in bytes. If unknown, it must be -1.
The network protocol used with the request, such as "HTTP/1.0", "HTTP/1.1", or "HTTP/2". See :repo:`headers.h:ProtocolStrings <source/common/http/headers.h>` for a list of all possible values.
The HTTP request body.
The HTTP request body in bytes. This is used instead of :ref:`body <envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.body>` when :ref:`pack_as_bytes <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.BufferSettings.pack_as_bytes>` is set to true.
This message defines attributes for a node that handles a network request. The node can be either a service or an application that sends, forwards, or receives the request. Service peers should fill in the ``service``, ``principal``, and ``labels`` as appropriate. [#next-free-field: 6]
Used in:
The address of the peer, this is typically the IP address. It can also be UDS path, or others.
The canonical service name of the peer. It should be set to :ref:`the HTTP x-envoy-downstream-service-cluster <config_http_conn_man_headers_downstream-service-cluster>` If a more trusted source of the service name is available through mTLS/secure naming, it should be used.
The labels associated with the peer. These could be pod labels for Kubernetes or tags for VMs. The source of the labels could be an X.509 certificate or other configuration.
The authenticated identity of this peer. For example, the identity associated with the workload such as a service account. If an X.509 certificate is used to assert the identity this field should be sourced from ``URI Subject Alternative Names``, ``DNS Subject Alternate Names`` or ``Subject`` in that order. The primary identity should be the principal. The principal format is issuer specific. Examples: - SPIFFE format is ``spiffe://trust-domain/path``. - Google account format is ``https://accounts.google.com/{userid}``.
The X.509 certificate used to authenticate the identify of this peer. When present, the certificate contents are encoded in URL and PEM format.
Represents a network request, such as an HTTP request.
Used in:
The timestamp when the proxy receives the first byte of the request.
Represents an HTTP request or an HTTP-like request.
This message defines attributes for the underlying TLS session.
Used in:
SNI used for TLS session.
HTTP attributes for a denied response.
Used in:
This field allows the authorization service to send an HTTP response status code to the downstream client. If not set, Envoy sends ``403 Forbidden`` HTTP status code by default.
This field allows the authorization service to send HTTP response headers to the downstream client. Note that the :ref:`append field in HeaderValueOption <envoy_v3_api_field_config.core.v3.HeaderValueOption.append>` defaults to false when used in this message.
This field allows the authorization service to send a response body data to the downstream client.
HTTP attributes for an OK response. [#next-free-field: 9]
Used in:
HTTP entity headers in addition to the original request headers. This allows the authorization service to append, to add or to override headers from the original request before dispatching it to the upstream. Note that the :ref:`append field in HeaderValueOption <envoy_v3_api_field_config.core.v3.HeaderValueOption.append>` defaults to false when used in this message. By setting the ``append`` field to ``true``, the filter will append the correspondent header value to the matched request header. By leaving ``append`` as false, the filter will either add a new header, or override an existing one if there is a match.
HTTP entity headers to remove from the original request before dispatching it to the upstream. This allows the authorization service to act on auth related headers (like ``Authorization``), process them, and consume them. Under this model, the upstream will either receive the request (if it's authorized) or not receive it (if it's not), but will not see headers containing authorization credentials. Pseudo headers (such as ``:authority``, ``:method``, ``:path`` etc), as well as the header ``Host``, may not be removed as that would make the request malformed. If mentioned in ``headers_to_remove`` these special headers will be ignored. When using the HTTP service this must instead be set by the HTTP authorization service as a comma separated list like so: ``x-envoy-auth-headers-to-remove: one-auth-header, another-auth-header``.
This field has been deprecated in favor of :ref:`CheckResponse.dynamic_metadata <envoy_v3_api_field_service.auth.v3.CheckResponse.dynamic_metadata>`. Until it is removed, setting this field overrides :ref:`CheckResponse.dynamic_metadata <envoy_v3_api_field_service.auth.v3.CheckResponse.dynamic_metadata>`.
This field allows the authorization service to send HTTP response headers to the downstream client on success. Note that the :ref:`append field in HeaderValueOption <envoy_v3_api_field_config.core.v3.HeaderValueOption.append>` defaults to false when used in this message.
This field allows the authorization service to set (and overwrite) query string parameters on the original request before it is sent upstream.
This field allows the authorization service to specify which query parameters should be removed from the original request before it is sent upstream. Each element in this list is a case-sensitive query parameter name to be removed.