// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v7.35.1
// source: envoy/extensions/filters/http/jwt_authn/v3/config.proto

package jwt_authnv3

import (
	_ "github.com/cncf/xds/go/udpa/annotations"
	v31 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
	v32 "github.com/envoyproxy/go-control-plane/envoy/config/route/v3"
	v3 "github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Please see following for JWT authentication flow:
//
// * `JSON Web Token (JWT) <https://tools.ietf.org/html/rfc7519>`_
// * `The OAuth 2.0 Authorization Framework <https://tools.ietf.org/html/rfc6749>`_
// * `OpenID Connect <http://openid.net/connect>`_
//
// A JwtProvider message specifies how a JSON Web Token (JWT) can be verified. It specifies:
//
// * issuer: the principal that issues the JWT. If specified, it has to match the “iss“ field in JWT.
// * allowed audiences: the ones in the token have to be listed here.
// * how to fetch public key JWKS to verify the token signature.
// * how to extract the JWT in the request.
// * how to pass successfully verified token payload.
//
// Example:
//
// .. code-block:: yaml
//
//	issuer: https://example.com
//	audiences:
//	- bookstore_android.apps.googleusercontent.com
//	- bookstore_web.apps.googleusercontent.com
//	remote_jwks:
//	  http_uri:
//	    uri: https://example.com/.well-known/jwks.json
//	    cluster: example_jwks_cluster
//	    timeout: 1s
//	  cache_duration:
//	    seconds: 300
//
// [#next-free-field: 22]
type JwtProvider struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Specify the `principal <https://tools.ietf.org/html/rfc7519#section-4.1.1>`_ that issued
	// the JWT, usually a URL or an email address.
	//
	// It is optional. If specified, it has to match the “iss“ field in JWT,
	// otherwise the JWT “iss“ field is not checked.
	//
	// .. note::
	//
	//	``JwtRequirement`` :ref:`allow_missing <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtRequirement.allow_missing>`
	//	and :ref:`allow_missing_or_failed <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtRequirement.allow_missing_or_failed>`
	//	are implemented differently than other ``JwtRequirements``. Hence the usage of this field
	//	is different as follows if ``allow_missing`` or ``allow_missing_or_failed`` is used:
	//
	//	* If a JWT has ``iss`` field, it needs to be specified by this field in one of ``JwtProviders``.
	//	* If a JWT doesn't have ``iss`` field, one of ``JwtProviders`` should fill this field empty.
	//	* Multiple ``JwtProviders`` should not have same value in this field.
	//
	// Examples:
	//
	// * https://securetoken.google.com
	// * Example: 1234567-compute@developer.gserviceaccount.com
	Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
	// The list of JWT `audiences <https://tools.ietf.org/html/rfc7519#section-4.1.3>`_ are
	// allowed to access. A JWT containing any of these audiences will be accepted. If not specified,
	// will not check audiences in the token.
	//
	// Example:
	//
	// .. code-block:: yaml
	//
	//	audiences:
	//	- bookstore_android.apps.googleusercontent.com
	//	- bookstore_web.apps.googleusercontent.com
	Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"`
	// Restrict the `subjects <https://tools.ietf.org/html/rfc7519#section-4.1.2>`_
	// that the JwtProvider can assert. For instance, this could implement JWT-SVID
	// `subject restrictions <https://github.com/spiffe/spiffe/blob/main/standards/JWT-SVID.md#31-subject>`_.
	// If not specified, will not check subjects in the token.
	//
	// Example:
	//
	// .. code-block:: yaml
	//
	//	subjects:
	//	  prefix: spiffe://spiffe.example.com/
	Subjects *v3.StringMatcher `protobuf:"bytes,19,opt,name=subjects,proto3" json:"subjects,omitempty"`
	// Requires that the credential contains an `expiration <https://tools.ietf.org/html/rfc7519#section-4.1.4>`_.
	// For instance, this could implement JWT-SVID
	// `expiration restrictions <https://github.com/spiffe/spiffe/blob/main/standards/JWT-SVID.md#33-expiration-time>`_.
	// Unlike “max_lifetime“, this only requires that expiration is present, where “max_lifetime“ also checks the value.
	//
	// Example:
	//
	// .. code-block:: yaml
	//
	//	require_expiration: true
	RequireExpiration bool `protobuf:"varint,20,opt,name=require_expiration,json=requireExpiration,proto3" json:"require_expiration,omitempty"`
	// Restrict the maximum remaining lifetime of a credential from the JwtProvider. Credential lifetime
	// is the difference between the current time and the expiration of the credential. For instance,
	// the following example will reject credentials that have a lifetime longer than 24 hours. If not set,
	// expiration checking still occurs, but there is no limit on credential lifetime. If set, takes precedence
	// over “require_expiration“.
	//
	// Example:
	//
	// .. code-block:: yaml
	//
	//	max_lifetime:
	//	  seconds: 86400
	MaxLifetime *durationpb.Duration `protobuf:"bytes,21,opt,name=max_lifetime,json=maxLifetime,proto3" json:"max_lifetime,omitempty"`
	// `JSON Web Key Set (JWKS) <https://tools.ietf.org/html/rfc7517#appendix-A>`_ is needed to
	// validate signature of a JWT. This field specifies where to fetch JWKS.
	//
	// Types that are valid to be assigned to JwksSourceSpecifier:
	//
	//	*JwtProvider_RemoteJwks
	//	*JwtProvider_LocalJwks
	JwksSourceSpecifier isJwtProvider_JwksSourceSpecifier `protobuf_oneof:"jwks_source_specifier"`
	// If false, the JWT is removed in the request after a success verification. If true, the JWT is
	// not removed in the request. Default value is false.
	// caveat: only works for from_header/from_params & has no effect for JWTs extracted through from_cookies.
	Forward bool `protobuf:"varint,5,opt,name=forward,proto3" json:"forward,omitempty"`
	// Two fields below define where to extract the JWT from an HTTP request.
	//
	// If no explicit location is specified, the following default locations are tried in order:
	//
	// 1. The Authorization header using the `Bearer schema
	// <https://tools.ietf.org/html/rfc6750#section-2.1>`_. Example::
	//
	//	Authorization: Bearer <token>.
	//
	// 2. `access_token <https://tools.ietf.org/html/rfc6750#section-2.3>`_ query parameter.
	//
	// Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations
	// its provider specified or from the default locations.
	//
	// Specify the HTTP headers to extract the JWT. For examples, following config:
	//
	// .. code-block:: yaml
	//
	//	from_headers:
	//	- name: x-goog-iap-jwt-assertion
	//
	// can be used to extract token from header::
	//
	//	``x-goog-iap-jwt-assertion: <JWT>``.
	FromHeaders []*JwtHeader `protobuf:"bytes,6,rep,name=from_headers,json=fromHeaders,proto3" json:"from_headers,omitempty"`
	// JWT is sent in a query parameter. “jwt_params“ represents the query parameter names.
	//
	// For example, if config is:
	//
	// .. code-block:: yaml
	//
	//	from_params:
	//	- jwt_token
	//
	// The JWT format in query parameter is::
	//
	//	/path?jwt_token=<JWT>
	FromParams []string `protobuf:"bytes,7,rep,name=from_params,json=fromParams,proto3" json:"from_params,omitempty"`
	// JWT is sent in a cookie. “from_cookies“ represents the cookie names to extract from.
	//
	// For example, if config is:
	//
	// .. code-block:: yaml
	//
	//	from_cookies:
	//	- auth-token
	//
	// Then JWT will be extracted from “auth-token“ cookie in the request.
	FromCookies []string `protobuf:"bytes,13,rep,name=from_cookies,json=fromCookies,proto3" json:"from_cookies,omitempty"`
	// This field specifies the header name to forward a successfully verified JWT payload to the
	// backend. The forwarded data is::
	//
	//	base64url_encoded(jwt_payload_in_JSON)
	//
	// If it is not specified, the payload will not be forwarded.
	ForwardPayloadHeader string `protobuf:"bytes,8,opt,name=forward_payload_header,json=forwardPayloadHeader,proto3" json:"forward_payload_header,omitempty"`
	// When :ref:`forward_payload_header <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtProvider.forward_payload_header>`
	// is specified, the base64 encoded payload will be added to the headers.
	// Normally JWT based64 encode doesn't add padding. If this field is true,
	// the header will be padded.
	//
	// This field is only relevant if :ref:`forward_payload_header <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtProvider.forward_payload_header>`
	// is specified.
	PadForwardPayloadHeader bool `protobuf:"varint,11,opt,name=pad_forward_payload_header,json=padForwardPayloadHeader,proto3" json:"pad_forward_payload_header,omitempty"`
	// If non empty, successfully verified JWT payloads will be written to StreamInfo DynamicMetadata
	// in the format as: “namespace“ is the jwt_authn filter name as ````envoy.filters.http.jwt_authn````
	// The value is the “protobuf::Struct“. The value of this field will be the key for its “fields“
	// and the value is the “protobuf::Struct“ converted from JWT JSON payload.
	//
	// For example, if payload_in_metadata is “my_payload“:
	//
	// .. code-block:: yaml
	//
	//	envoy.filters.http.jwt_authn:
	//	  my_payload:
	//	    iss: https://example.com
	//	    sub: test@example.com
	//	    aud: https://example.com
	//	    exp: 1501281058
	PayloadInMetadata string `protobuf:"bytes,9,opt,name=payload_in_metadata,json=payloadInMetadata,proto3" json:"payload_in_metadata,omitempty"`
	// Normalizes the payload representation in the request metadata.
	NormalizePayloadInMetadata *JwtProvider_NormalizePayload `protobuf:"bytes,18,opt,name=normalize_payload_in_metadata,json=normalizePayloadInMetadata,proto3" json:"normalize_payload_in_metadata,omitempty"`
	// If not empty, similar to :ref:`payload_in_metadata <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtProvider.payload_in_metadata>`,
	// a successfully verified JWT header will be written to :ref:`Dynamic State <arch_overview_data_sharing_between_filters>`
	// as an entry (“protobuf::Struct“) in “envoy.filters.http.jwt_authn“ “namespace“ with the
	// value of this field as the key.
	//
	// For example, if “header_in_metadata“ is “my_header“:
	//
	// .. code-block:: yaml
	//
	//	envoy.filters.http.jwt_authn:
	//	  my_header:
	//	    alg: JWT
	//	    kid: EF71iSaosbC5C4tC6Syq1Gm647M
	//	    alg: PS256
	//
	// When the metadata has “envoy.filters.http.jwt_authn“ entry already (for example if
	// :ref:`payload_in_metadata <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtProvider.payload_in_metadata>`
	// is not empty), it will be inserted as a new entry in the same “namespace“ as shown below:
	//
	// .. code-block:: yaml
	//
	//	envoy.filters.http.jwt_authn:
	//	  my_payload:
	//	    iss: https://example.com
	//	    sub: test@example.com
	//	    aud: https://example.com
	//	    exp: 1501281058
	//	  my_header:
	//	    alg: JWT
	//	    kid: EF71iSaosbC5C4tC6Syq1Gm647M
	//	    alg: PS256
	//
	// .. warning::
	//
	//	Using the same key name for :ref:`header_in_metadata <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtProvider.payload_in_metadata>`
	//	and :ref:`payload_in_metadata <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtProvider.payload_in_metadata>`
	//	is not suggested due to potential override of existing entry, while it is not enforced during
	//	config validation.
	HeaderInMetadata string `protobuf:"bytes,14,opt,name=header_in_metadata,json=headerInMetadata,proto3" json:"header_in_metadata,omitempty"`
	// If non empty, the failure status “::google::jwt_verify::Status“ for a non verified JWT will be written to StreamInfo DynamicMetadata
	// in the format as: “namespace“ is the jwt_authn filter name as “envoy.filters.http.jwt_authn“
	// The value is the “protobuf::Struct“. The values of this field will be “code“ and “message“
	// and they will contain the JWT authentication failure status code and a message describing the failure.
	//
	// For example, if failed_status_in_metadata is “my_auth_failure_status“:
	//
	// .. code-block:: yaml
	//
	//	envoy.filters.http.jwt_authn:
	//	  my_auth_failure_status:
	//	    code: 3
	//	    message: Jwt expired
	FailedStatusInMetadata string `protobuf:"bytes,16,opt,name=failed_status_in_metadata,json=failedStatusInMetadata,proto3" json:"failed_status_in_metadata,omitempty"`
	// Specify the clock skew in seconds when verifying JWT time constraint,
	// such as “exp“, and “nbf“. If not specified, default is 60 seconds.
	ClockSkewSeconds uint32 `protobuf:"varint,10,opt,name=clock_skew_seconds,json=clockSkewSeconds,proto3" json:"clock_skew_seconds,omitempty"`
	// Enables JWT cache, its size is specified by “jwt_cache_size“.
	// Only valid JWTs are cached.
	JwtCacheConfig *JwtCacheConfig `protobuf:"bytes,12,opt,name=jwt_cache_config,json=jwtCacheConfig,proto3" json:"jwt_cache_config,omitempty"`
	// Add JWT claim to HTTP Header
	// Specify the claim name you want to copy in which HTTP header. For examples, following config:
	// The claim must be of type; string, int, double, bool. Array type claims are not supported
	//
	// .. literalinclude:: /_configs/repo/jwt_authn.yaml
	//
	//	:language: yaml
	//	:lines: 44-48
	//	:linenos:
	//	:lineno-start: 44
	//	:caption: :download:`jwt_authn.yaml </_configs/repo/jwt_authn.yaml>`
	//
	// This header is only reserved for jwt claim; any other value will be overwritten.
	ClaimToHeaders []*JwtClaimToHeader `protobuf:"bytes,15,rep,name=claim_to_headers,json=claimToHeaders,proto3" json:"claim_to_headers,omitempty"`
	// Clears route cache in order to allow the JWT to correctly affect
	// routing decisions. Filter clears all cached routes when:
	//
	// 1. The field is set to “true“.
	//
	//  2. At least one “claim_to_headers“ header is added to the request OR
	//     if “payload_in_metadata“ is set.
	ClearRouteCache bool `protobuf:"varint,17,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *JwtProvider) Reset() {
	*x = JwtProvider{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtProvider) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtProvider) ProtoMessage() {}

func (x *JwtProvider) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtProvider.ProtoReflect.Descriptor instead.
func (*JwtProvider) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{0}
}

func (x *JwtProvider) GetIssuer() string {
	if x != nil {
		return x.Issuer
	}
	return ""
}

func (x *JwtProvider) GetAudiences() []string {
	if x != nil {
		return x.Audiences
	}
	return nil
}

func (x *JwtProvider) GetSubjects() *v3.StringMatcher {
	if x != nil {
		return x.Subjects
	}
	return nil
}

func (x *JwtProvider) GetRequireExpiration() bool {
	if x != nil {
		return x.RequireExpiration
	}
	return false
}

func (x *JwtProvider) GetMaxLifetime() *durationpb.Duration {
	if x != nil {
		return x.MaxLifetime
	}
	return nil
}

func (x *JwtProvider) GetJwksSourceSpecifier() isJwtProvider_JwksSourceSpecifier {
	if x != nil {
		return x.JwksSourceSpecifier
	}
	return nil
}

func (x *JwtProvider) GetRemoteJwks() *RemoteJwks {
	if x != nil {
		if x, ok := x.JwksSourceSpecifier.(*JwtProvider_RemoteJwks); ok {
			return x.RemoteJwks
		}
	}
	return nil
}

func (x *JwtProvider) GetLocalJwks() *v31.DataSource {
	if x != nil {
		if x, ok := x.JwksSourceSpecifier.(*JwtProvider_LocalJwks); ok {
			return x.LocalJwks
		}
	}
	return nil
}

func (x *JwtProvider) GetForward() bool {
	if x != nil {
		return x.Forward
	}
	return false
}

func (x *JwtProvider) GetFromHeaders() []*JwtHeader {
	if x != nil {
		return x.FromHeaders
	}
	return nil
}

func (x *JwtProvider) GetFromParams() []string {
	if x != nil {
		return x.FromParams
	}
	return nil
}

func (x *JwtProvider) GetFromCookies() []string {
	if x != nil {
		return x.FromCookies
	}
	return nil
}

func (x *JwtProvider) GetForwardPayloadHeader() string {
	if x != nil {
		return x.ForwardPayloadHeader
	}
	return ""
}

func (x *JwtProvider) GetPadForwardPayloadHeader() bool {
	if x != nil {
		return x.PadForwardPayloadHeader
	}
	return false
}

func (x *JwtProvider) GetPayloadInMetadata() string {
	if x != nil {
		return x.PayloadInMetadata
	}
	return ""
}

func (x *JwtProvider) GetNormalizePayloadInMetadata() *JwtProvider_NormalizePayload {
	if x != nil {
		return x.NormalizePayloadInMetadata
	}
	return nil
}

func (x *JwtProvider) GetHeaderInMetadata() string {
	if x != nil {
		return x.HeaderInMetadata
	}
	return ""
}

func (x *JwtProvider) GetFailedStatusInMetadata() string {
	if x != nil {
		return x.FailedStatusInMetadata
	}
	return ""
}

func (x *JwtProvider) GetClockSkewSeconds() uint32 {
	if x != nil {
		return x.ClockSkewSeconds
	}
	return 0
}

func (x *JwtProvider) GetJwtCacheConfig() *JwtCacheConfig {
	if x != nil {
		return x.JwtCacheConfig
	}
	return nil
}

func (x *JwtProvider) GetClaimToHeaders() []*JwtClaimToHeader {
	if x != nil {
		return x.ClaimToHeaders
	}
	return nil
}

func (x *JwtProvider) GetClearRouteCache() bool {
	if x != nil {
		return x.ClearRouteCache
	}
	return false
}

type isJwtProvider_JwksSourceSpecifier interface {
	isJwtProvider_JwksSourceSpecifier()
}

type JwtProvider_RemoteJwks struct {
	// JWKS can be fetched from remote server via HTTP/HTTPS. This field specifies the remote HTTP
	// URI and how the fetched JWKS should be cached.
	//
	// Example:
	//
	// .. code-block:: yaml
	//
	//	remote_jwks:
	//	  http_uri:
	//	    uri: https://www.googleapis.com/oauth2/v1/certs
	//	    cluster: jwt.www.googleapis.com|443
	//	    timeout: 1s
	//	  cache_duration:
	//	    seconds: 300
	RemoteJwks *RemoteJwks `protobuf:"bytes,3,opt,name=remote_jwks,json=remoteJwks,proto3,oneof"`
}

type JwtProvider_LocalJwks struct {
	// JWKS is in local data source. It could be either in a local file or embedded in the
	// inline_string.
	//
	// Example: local file
	//
	// .. code-block:: yaml
	//
	//	local_jwks:
	//	  filename: /etc/envoy/jwks/jwks1.txt
	//
	// Example: inline_string
	//
	// .. code-block:: yaml
	//
	//	local_jwks:
	//	  inline_string: ACADADADADA
	LocalJwks *v31.DataSource `protobuf:"bytes,4,opt,name=local_jwks,json=localJwks,proto3,oneof"`
}

func (*JwtProvider_RemoteJwks) isJwtProvider_JwksSourceSpecifier() {}

func (*JwtProvider_LocalJwks) isJwtProvider_JwksSourceSpecifier() {}

// This message specifies JWT Cache configuration.
type JwtCacheConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The unit is number of JWTs, default to 100.
	JwtCacheSize uint32 `protobuf:"varint,1,opt,name=jwt_cache_size,json=jwtCacheSize,proto3" json:"jwt_cache_size,omitempty"`
	// The maximum size of a single cached token in bytes.
	// If this field is not set or is set to 0, then the default value 4096 bytes is used.
	// The maximum value for a token is inclusive.
	JwtMaxTokenSize uint32 `protobuf:"varint,2,opt,name=jwt_max_token_size,json=jwtMaxTokenSize,proto3" json:"jwt_max_token_size,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *JwtCacheConfig) Reset() {
	*x = JwtCacheConfig{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtCacheConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtCacheConfig) ProtoMessage() {}

func (x *JwtCacheConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtCacheConfig.ProtoReflect.Descriptor instead.
func (*JwtCacheConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{1}
}

func (x *JwtCacheConfig) GetJwtCacheSize() uint32 {
	if x != nil {
		return x.JwtCacheSize
	}
	return 0
}

func (x *JwtCacheConfig) GetJwtMaxTokenSize() uint32 {
	if x != nil {
		return x.JwtMaxTokenSize
	}
	return 0
}

// This message specifies how to fetch JWKS from remote and how to cache it.
type RemoteJwks struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The HTTP URI to fetch the JWKS. For example:
	//
	// .. code-block:: yaml
	//
	//	http_uri:
	//	  uri: https://www.googleapis.com/oauth2/v1/certs
	//	  cluster: jwt.www.googleapis.com|443
	//	  timeout: 1s
	HttpUri *v31.HttpUri `protobuf:"bytes,1,opt,name=http_uri,json=httpUri,proto3" json:"http_uri,omitempty"`
	// Duration after which the cached JWKS should be expired. If not specified, default cache
	// duration is 10 minutes.
	CacheDuration *durationpb.Duration `protobuf:"bytes,2,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"`
	// Fetch Jwks asynchronously in the main thread before the listener is activated.
	// Fetched Jwks can be used by all worker threads.
	//
	// If this feature is not enabled:
	//
	//   - The Jwks is fetched on-demand when the requests come. During the fetching, first
	//     few requests are paused until the Jwks is fetched.
	//   - Each worker thread fetches its own Jwks since Jwks cache is per worker thread.
	//
	// If this feature is enabled:
	//
	//   - Fetched Jwks is done in the main thread before the listener is activated. Its fetched
	//     Jwks can be used by all worker threads. Each worker thread doesn't need to fetch its own.
	//   - Jwks is ready when the requests come, not need to wait for the Jwks fetching.
	AsyncFetch *JwksAsyncFetch `protobuf:"bytes,3,opt,name=async_fetch,json=asyncFetch,proto3" json:"async_fetch,omitempty"`
	// Retry policy for fetching Jwks. optional. turned off by default.
	//
	// For example:
	//
	// .. code-block:: yaml
	//
	//	retry_policy:
	//	  retry_back_off:
	//	    base_interval: 0.01s
	//	    max_interval: 20s
	//	  num_retries: 10
	//
	// will yield a randomized truncated exponential backoff policy with an initial delay of 10ms
	// 10 maximum attempts spaced at most 20s seconds.
	//
	// .. code-block:: yaml
	//
	//	retry_policy:
	//	  num_retries:1
	//
	// uses the default :ref:`retry backoff strategy <envoy_v3_api_msg_config.core.v3.BackoffStrategy>`.
	// with the default base interval is 1000 milliseconds. and the default maximum interval of 10 times the base interval.
	//
	// if num_retries is omitted, the default is to allow only one retry.
	//
	// If enabled, the retry policy will apply to all Jwks fetching approaches, e.g. on demand or asynchronously in background.
	RetryPolicy   *v31.RetryPolicy `protobuf:"bytes,4,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoteJwks) Reset() {
	*x = RemoteJwks{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoteJwks) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoteJwks) ProtoMessage() {}

func (x *RemoteJwks) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoteJwks.ProtoReflect.Descriptor instead.
func (*RemoteJwks) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{2}
}

func (x *RemoteJwks) GetHttpUri() *v31.HttpUri {
	if x != nil {
		return x.HttpUri
	}
	return nil
}

func (x *RemoteJwks) GetCacheDuration() *durationpb.Duration {
	if x != nil {
		return x.CacheDuration
	}
	return nil
}

func (x *RemoteJwks) GetAsyncFetch() *JwksAsyncFetch {
	if x != nil {
		return x.AsyncFetch
	}
	return nil
}

func (x *RemoteJwks) GetRetryPolicy() *v31.RetryPolicy {
	if x != nil {
		return x.RetryPolicy
	}
	return nil
}

// Fetch Jwks asynchronously in the main thread when the filter config is parsed.
// The listener is activated only after the Jwks is fetched.
// When the Jwks is expired in the cache, it is fetched again in the main thread.
// The fetched Jwks from the main thread can be used by all worker threads.
type JwksAsyncFetch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// If false, the listener is activated after the initial fetch is completed.
	// The initial fetch result can be either successful or failed.
	// If true, it is activated without waiting for the initial fetch to complete.
	// Default is false.
	FastListener bool `protobuf:"varint,1,opt,name=fast_listener,json=fastListener,proto3" json:"fast_listener,omitempty"`
	// The duration to refetch after a failed fetch. If not specified, default is 1 second.
	FailedRefetchDuration *durationpb.Duration `protobuf:"bytes,2,opt,name=failed_refetch_duration,json=failedRefetchDuration,proto3" json:"failed_refetch_duration,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *JwksAsyncFetch) Reset() {
	*x = JwksAsyncFetch{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwksAsyncFetch) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwksAsyncFetch) ProtoMessage() {}

func (x *JwksAsyncFetch) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwksAsyncFetch.ProtoReflect.Descriptor instead.
func (*JwksAsyncFetch) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{3}
}

func (x *JwksAsyncFetch) GetFastListener() bool {
	if x != nil {
		return x.FastListener
	}
	return false
}

func (x *JwksAsyncFetch) GetFailedRefetchDuration() *durationpb.Duration {
	if x != nil {
		return x.FailedRefetchDuration
	}
	return nil
}

// This message specifies a header location to extract the JWT.
type JwtHeader struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The HTTP header name.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The value prefix. The value format is "value_prefix<token>"
	// For example, for "Authorization: Bearer <token>", value_prefix="Bearer " with a space at the
	// end.
	ValuePrefix   string `protobuf:"bytes,2,opt,name=value_prefix,json=valuePrefix,proto3" json:"value_prefix,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *JwtHeader) Reset() {
	*x = JwtHeader{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtHeader) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtHeader) ProtoMessage() {}

func (x *JwtHeader) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtHeader.ProtoReflect.Descriptor instead.
func (*JwtHeader) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{4}
}

func (x *JwtHeader) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *JwtHeader) GetValuePrefix() string {
	if x != nil {
		return x.ValuePrefix
	}
	return ""
}

// Specify a required provider with audiences.
type ProviderWithAudiences struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Specify a required provider name.
	ProviderName string `protobuf:"bytes,1,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// This field overrides the one specified in the JwtProvider.
	Audiences     []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProviderWithAudiences) Reset() {
	*x = ProviderWithAudiences{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProviderWithAudiences) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProviderWithAudiences) ProtoMessage() {}

func (x *ProviderWithAudiences) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProviderWithAudiences.ProtoReflect.Descriptor instead.
func (*ProviderWithAudiences) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{5}
}

func (x *ProviderWithAudiences) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *ProviderWithAudiences) GetAudiences() []string {
	if x != nil {
		return x.Audiences
	}
	return nil
}

// This message specifies a Jwt requirement. An empty message means JWT verification is not
// required. Here are some config examples:
//
// .. code-block:: yaml
//
//	# Example 1: not required with an empty message
//
//	# Example 2: require A
//	provider_name: provider-A
//
//	# Example 3: require A or B
//	requires_any:
//	  requirements:
//	    - provider_name: provider-A
//	    - provider_name: provider-B
//
//	# Example 4: require A and B
//	requires_all:
//	  requirements:
//	    - provider_name: provider-A
//	    - provider_name: provider-B
//
//	# Example 5: require A and (B or C)
//	requires_all:
//	  requirements:
//	    - provider_name: provider-A
//	    - requires_any:
//	      requirements:
//	        - provider_name: provider-B
//	        - provider_name: provider-C
//
//	# Example 6: require A or (B and C)
//	requires_any:
//	  requirements:
//	    - provider_name: provider-A
//	    - requires_all:
//	      requirements:
//	        - provider_name: provider-B
//	        - provider_name: provider-C
//
//	# Example 7: A is optional (if token from A is provided, it must be valid, but also allows
//	missing token.)
//	requires_any:
//	  requirements:
//	  - provider_name: provider-A
//	  - allow_missing: {}
//
//	# Example 8: A is optional and B is required.
//	requires_all:
//	  requirements:
//	  - requires_any:
//	      requirements:
//	      - provider_name: provider-A
//	      - allow_missing: {}
//	  - provider_name: provider-B
//
// [#next-free-field: 8]
type JwtRequirement struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to RequiresType:
	//
	//	*JwtRequirement_ProviderName
	//	*JwtRequirement_ProviderAndAudiences
	//	*JwtRequirement_RequiresAny
	//	*JwtRequirement_RequiresAll
	//	*JwtRequirement_AllowMissingOrFailed
	//	*JwtRequirement_AllowMissing
	//	*JwtRequirement_ExtractOnlyWithoutValidation
	RequiresType  isJwtRequirement_RequiresType `protobuf_oneof:"requires_type"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *JwtRequirement) Reset() {
	*x = JwtRequirement{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtRequirement) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtRequirement) ProtoMessage() {}

func (x *JwtRequirement) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtRequirement.ProtoReflect.Descriptor instead.
func (*JwtRequirement) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{6}
}

func (x *JwtRequirement) GetRequiresType() isJwtRequirement_RequiresType {
	if x != nil {
		return x.RequiresType
	}
	return nil
}

func (x *JwtRequirement) GetProviderName() string {
	if x != nil {
		if x, ok := x.RequiresType.(*JwtRequirement_ProviderName); ok {
			return x.ProviderName
		}
	}
	return ""
}

func (x *JwtRequirement) GetProviderAndAudiences() *ProviderWithAudiences {
	if x != nil {
		if x, ok := x.RequiresType.(*JwtRequirement_ProviderAndAudiences); ok {
			return x.ProviderAndAudiences
		}
	}
	return nil
}

func (x *JwtRequirement) GetRequiresAny() *JwtRequirementOrList {
	if x != nil {
		if x, ok := x.RequiresType.(*JwtRequirement_RequiresAny); ok {
			return x.RequiresAny
		}
	}
	return nil
}

func (x *JwtRequirement) GetRequiresAll() *JwtRequirementAndList {
	if x != nil {
		if x, ok := x.RequiresType.(*JwtRequirement_RequiresAll); ok {
			return x.RequiresAll
		}
	}
	return nil
}

func (x *JwtRequirement) GetAllowMissingOrFailed() *emptypb.Empty {
	if x != nil {
		if x, ok := x.RequiresType.(*JwtRequirement_AllowMissingOrFailed); ok {
			return x.AllowMissingOrFailed
		}
	}
	return nil
}

func (x *JwtRequirement) GetAllowMissing() *emptypb.Empty {
	if x != nil {
		if x, ok := x.RequiresType.(*JwtRequirement_AllowMissing); ok {
			return x.AllowMissing
		}
	}
	return nil
}

func (x *JwtRequirement) GetExtractOnlyWithoutValidation() *ExtractOnlyWithoutValidation {
	if x != nil {
		if x, ok := x.RequiresType.(*JwtRequirement_ExtractOnlyWithoutValidation); ok {
			return x.ExtractOnlyWithoutValidation
		}
	}
	return nil
}

type isJwtRequirement_RequiresType interface {
	isJwtRequirement_RequiresType()
}

type JwtRequirement_ProviderName struct {
	// Specify a required provider name.
	ProviderName string `protobuf:"bytes,1,opt,name=provider_name,json=providerName,proto3,oneof"`
}

type JwtRequirement_ProviderAndAudiences struct {
	// Specify a required provider with audiences.
	ProviderAndAudiences *ProviderWithAudiences `protobuf:"bytes,2,opt,name=provider_and_audiences,json=providerAndAudiences,proto3,oneof"`
}

type JwtRequirement_RequiresAny struct {
	// Specify list of JwtRequirement. Their results are OR-ed.
	// If any one of them passes, the result is passed.
	RequiresAny *JwtRequirementOrList `protobuf:"bytes,3,opt,name=requires_any,json=requiresAny,proto3,oneof"`
}

type JwtRequirement_RequiresAll struct {
	// Specify list of JwtRequirement. Their results are AND-ed.
	// All of them must pass, if one of them fails or missing, it fails.
	RequiresAll *JwtRequirementAndList `protobuf:"bytes,4,opt,name=requires_all,json=requiresAll,proto3,oneof"`
}

type JwtRequirement_AllowMissingOrFailed struct {
	// The requirement is always satisfied even if JWT is missing or the JWT
	// verification fails. A typical usage is: this filter is used to only verify
	// JWTs and pass the verified JWT payloads to another filter, the other filter
	// will make decision. In this mode, all JWTs will be verified.
	AllowMissingOrFailed *emptypb.Empty `protobuf:"bytes,5,opt,name=allow_missing_or_failed,json=allowMissingOrFailed,proto3,oneof"`
}

type JwtRequirement_AllowMissing struct {
	// The requirement is satisfied if JWT is missing, but failed if JWT is
	// presented but invalid. Similar to allow_missing_or_failed, this is used
	// to only verify JWTs and pass the verified payload to another filter. The
	// different is this mode will reject requests with invalid tokens.
	AllowMissing *emptypb.Empty `protobuf:"bytes,6,opt,name=allow_missing,json=allowMissing,proto3,oneof"`
}

type JwtRequirement_ExtractOnlyWithoutValidation struct {
	// [#next-major-version: consider removing or gating behind explicit opt-in]
	//
	// .. warning::
	//
	//	SECURITY WARNING: This mode does NOT verify JWT signatures. Any party
	//	can forge a JWT with arbitrary claims, and those claims will be extracted
	//	and forwarded as HTTP headers. Headers set by this mode are
	//	INDISTINGUISHABLE from headers set by fully validated JWTs unless the
	//	``verification_status_header`` is checked by downstream filters
	//	(set to ``false`` by default on all extract-only requests).
	//
	//	DO NOT use this mode if:
	//	  - RBAC policies match on JWT-derived headers
	//	  - ext_authz services trust JWT-derived headers
	//	  - Backend services use JWT-derived headers for authorization
	//	  - The JWT source is not cryptographically authenticated by other means
	//
	//	Use only when signature verification is PROVABLY performed elsewhere
	//	in the request path (e.g., by an upstream mTLS-authenticated service).
	ExtractOnlyWithoutValidation *ExtractOnlyWithoutValidation `protobuf:"bytes,7,opt,name=extract_only_without_validation,json=extractOnlyWithoutValidation,proto3,oneof"`
}

func (*JwtRequirement_ProviderName) isJwtRequirement_RequiresType() {}

func (*JwtRequirement_ProviderAndAudiences) isJwtRequirement_RequiresType() {}

func (*JwtRequirement_RequiresAny) isJwtRequirement_RequiresType() {}

func (*JwtRequirement_RequiresAll) isJwtRequirement_RequiresType() {}

func (*JwtRequirement_AllowMissingOrFailed) isJwtRequirement_RequiresType() {}

func (*JwtRequirement_AllowMissing) isJwtRequirement_RequiresType() {}

func (*JwtRequirement_ExtractOnlyWithoutValidation) isJwtRequirement_RequiresType() {}

// Configuration for extract-only mode without JWT signature validation.
//
// When this mode is active and a JWT is present in the request but fails
// signature verification, a verification status header is set on the request
// to signal to downstream filters (RBAC, ext_authz) that the JWT claims were
// NOT cryptographically verified. The header is not set when the JWT is valid
// or when no JWT is present.
type ExtractOnlyWithoutValidation struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Name of the HTTP header set to "false" when a JWT is present but fails
	// signature verification. The header is NOT set when:
	//
	// - The JWT is valid (verification succeeded), or
	// - No JWT is present in the request.
	//
	// This means the header's presence is a meaningful signal to downstream
	// filters: if set, the JWT was present but could not be verified, and any
	// extracted claim headers should not be trusted for authorization.
	//
	// Downstream filters (RBAC, ext_authz) SHOULD check for the absence of this
	// header (or its non-"false" value) before trusting JWT-derived claim headers
	// for authorization decisions.
	//
	// Default (unset or empty): “x-jwt-signature-verified“.
	//
	// Custom value: uses the specified header name.
	//
	// The header-setting behavior is guarded by the
	// “envoy.reloadable_features.jwt_authn_add_verification_status_header“
	// runtime flag (default on). If removal is needed downstream, use header
	// mutation in a subsequent filter.
	//
	// Example: when a JWT is present in the request but fails signature
	// verification, the request will carry:
	//
	// .. code-block:: yaml
	//
	//	x-jwt-signature-verified: false
	VerificationStatusHeader string `protobuf:"bytes,1,opt,name=verification_status_header,json=verificationStatusHeader,proto3" json:"verification_status_header,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

func (x *ExtractOnlyWithoutValidation) Reset() {
	*x = ExtractOnlyWithoutValidation{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExtractOnlyWithoutValidation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExtractOnlyWithoutValidation) ProtoMessage() {}

func (x *ExtractOnlyWithoutValidation) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExtractOnlyWithoutValidation.ProtoReflect.Descriptor instead.
func (*ExtractOnlyWithoutValidation) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{7}
}

func (x *ExtractOnlyWithoutValidation) GetVerificationStatusHeader() string {
	if x != nil {
		return x.VerificationStatusHeader
	}
	return ""
}

// This message specifies a list of RequiredProvider.
// Their results are OR-ed; if any one of them passes, the result is passed
type JwtRequirementOrList struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Specify a list of JwtRequirement.
	Requirements  []*JwtRequirement `protobuf:"bytes,1,rep,name=requirements,proto3" json:"requirements,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *JwtRequirementOrList) Reset() {
	*x = JwtRequirementOrList{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtRequirementOrList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtRequirementOrList) ProtoMessage() {}

func (x *JwtRequirementOrList) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtRequirementOrList.ProtoReflect.Descriptor instead.
func (*JwtRequirementOrList) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{8}
}

func (x *JwtRequirementOrList) GetRequirements() []*JwtRequirement {
	if x != nil {
		return x.Requirements
	}
	return nil
}

// This message specifies a list of RequiredProvider.
// Their results are AND-ed; all of them must pass, if one of them fails or missing, it fails.
type JwtRequirementAndList struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Specify a list of JwtRequirement.
	Requirements  []*JwtRequirement `protobuf:"bytes,1,rep,name=requirements,proto3" json:"requirements,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *JwtRequirementAndList) Reset() {
	*x = JwtRequirementAndList{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtRequirementAndList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtRequirementAndList) ProtoMessage() {}

func (x *JwtRequirementAndList) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtRequirementAndList.ProtoReflect.Descriptor instead.
func (*JwtRequirementAndList) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{9}
}

func (x *JwtRequirementAndList) GetRequirements() []*JwtRequirement {
	if x != nil {
		return x.Requirements
	}
	return nil
}

// This message specifies a Jwt requirement for a specific Route condition.
// Example 1:
//
// .. code-block:: yaml
//
//   - match:
//     prefix: /healthz
//
// In above example, "requires" field is empty for /healthz prefix match,
// it means that requests matching the path prefix don't require JWT authentication.
//
// Example 2:
//
// .. code-block:: yaml
//
//   - match:
//     prefix: /
//     requires: { provider_name: provider-A }
//
// In above example, all requests matched the path prefix require jwt authentication
// from "provider-A".
type RequirementRule struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The route matching parameter. Only when the match is satisfied, the "requires" field will
	// apply.
	//
	// For example: following match will match all requests.
	//
	// .. code-block:: yaml
	//
	//	match:
	//	  prefix: /
	Match *v32.RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
	// Specify a Jwt requirement.
	// If not specified, Jwt verification is disabled.
	//
	// Types that are valid to be assigned to RequirementType:
	//
	//	*RequirementRule_Requires
	//	*RequirementRule_RequirementName
	RequirementType isRequirementRule_RequirementType `protobuf_oneof:"requirement_type"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *RequirementRule) Reset() {
	*x = RequirementRule{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RequirementRule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RequirementRule) ProtoMessage() {}

func (x *RequirementRule) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RequirementRule.ProtoReflect.Descriptor instead.
func (*RequirementRule) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{10}
}

func (x *RequirementRule) GetMatch() *v32.RouteMatch {
	if x != nil {
		return x.Match
	}
	return nil
}

func (x *RequirementRule) GetRequirementType() isRequirementRule_RequirementType {
	if x != nil {
		return x.RequirementType
	}
	return nil
}

func (x *RequirementRule) GetRequires() *JwtRequirement {
	if x != nil {
		if x, ok := x.RequirementType.(*RequirementRule_Requires); ok {
			return x.Requires
		}
	}
	return nil
}

func (x *RequirementRule) GetRequirementName() string {
	if x != nil {
		if x, ok := x.RequirementType.(*RequirementRule_RequirementName); ok {
			return x.RequirementName
		}
	}
	return ""
}

type isRequirementRule_RequirementType interface {
	isRequirementRule_RequirementType()
}

type RequirementRule_Requires struct {
	// Specify a Jwt requirement. Please see detail comment in message JwtRequirement.
	Requires *JwtRequirement `protobuf:"bytes,2,opt,name=requires,proto3,oneof"`
}

type RequirementRule_RequirementName struct {
	// Use requirement_name to specify a Jwt requirement.
	// This requirement_name MUST be specified at the
	// :ref:`requirement_map <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtAuthentication.requirement_map>`
	// in “JwtAuthentication“.
	RequirementName string `protobuf:"bytes,3,opt,name=requirement_name,json=requirementName,proto3,oneof"`
}

func (*RequirementRule_Requires) isRequirementRule_RequirementType() {}

func (*RequirementRule_RequirementName) isRequirementRule_RequirementType() {}

// This message specifies Jwt requirements based on stream_info.filterState.
// This FilterState should use “Router::StringAccessor“ object to set a string value.
// Other HTTP filters can use it to specify Jwt requirements dynamically.
//
// Example:
//
// .. code-block:: yaml
//
//	name: jwt_selector
//	requires:
//	  issuer_1:
//	    provider_name: issuer1
//	  issuer_2:
//	    provider_name: issuer2
//
// If a filter set "jwt_selector" with "issuer_1" to FilterState for a request,
// jwt_authn filter will use JwtRequirement{"provider_name": "issuer1"} to verify.
type FilterStateRule struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The filter state name to retrieve the “Router::StringAccessor“ object.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// A map of string keys to requirements. The string key is the string value
	// in the FilterState with the name specified in the “name“ field above.
	Requires      map[string]*JwtRequirement `protobuf:"bytes,3,rep,name=requires,proto3" json:"requires,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FilterStateRule) Reset() {
	*x = FilterStateRule{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FilterStateRule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FilterStateRule) ProtoMessage() {}

func (x *FilterStateRule) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FilterStateRule.ProtoReflect.Descriptor instead.
func (*FilterStateRule) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{11}
}

func (x *FilterStateRule) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *FilterStateRule) GetRequires() map[string]*JwtRequirement {
	if x != nil {
		return x.Requires
	}
	return nil
}

// This is the Envoy HTTP filter config for JWT authentication.
//
// For example:
//
// .. code-block:: yaml
//
//	providers:
//	   provider1:
//	     issuer: issuer1
//	     audiences:
//	     - audience1
//	     - audience2
//	     remote_jwks:
//	       http_uri:
//	         uri: https://example.com/.well-known/jwks.json
//	         cluster: example_jwks_cluster
//	         timeout: 1s
//	   provider2:
//	     issuer: issuer2
//	     local_jwks:
//	       inline_string: jwks_string
//
//	rules:
//	   # Not jwt verification is required for /health path
//	   - match:
//	       prefix: /health
//
//	   # Jwt verification for provider1 is required for path prefixed with "prefix"
//	   - match:
//	       prefix: /prefix
//	     requires:
//	       provider_name: provider1
//
//	   # Jwt verification for either provider1 or provider2 is required for all other requests.
//	   - match:
//	       prefix: /
//	     requires:
//	       requires_any:
//	         requirements:
//	           - provider_name: provider1
//	           - provider_name: provider2
//
// [#next-free-field: 8]
type JwtAuthentication struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Map of provider names to JwtProviders.
	//
	// .. code-block:: yaml
	//
	//	providers:
	//	  provider1:
	//	     issuer: issuer1
	//	     audiences:
	//	     - audience1
	//	     - audience2
	//	     remote_jwks:
	//	       http_uri:
	//	         uri: https://example.com/.well-known/jwks.json
	//	         cluster: example_jwks_cluster
	//	         timeout: 1s
	//	   provider2:
	//	     issuer: provider2
	//	     local_jwks:
	//	       inline_string: jwks_string
	Providers map[string]*JwtProvider `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Specifies requirements based on the route matches. The first matched requirement will be
	// applied. If there are overlapped match conditions, please put the most specific match first.
	//
	// # Examples
	//
	// .. code-block:: yaml
	//
	//	rules:
	//	  - match:
	//	      prefix: /healthz
	//	  - match:
	//	      prefix: /baz
	//	    requires:
	//	      provider_name: provider1
	//	  - match:
	//	      prefix: /foo
	//	    requires:
	//	      requires_any:
	//	        requirements:
	//	          - provider_name: provider1
	//	          - provider_name: provider2
	//	  - match:
	//	      prefix: /bar
	//	    requires:
	//	      requires_all:
	//	        requirements:
	//	          - provider_name: provider1
	//	          - provider_name: provider2
	Rules []*RequirementRule `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules,omitempty"`
	// This message specifies Jwt requirements based on stream_info.filterState.
	// Other HTTP filters can use it to specify Jwt requirements dynamically.
	// The “rules“ field above is checked first, if it could not find any matches,
	// check this one.
	FilterStateRules *FilterStateRule `protobuf:"bytes,3,opt,name=filter_state_rules,json=filterStateRules,proto3" json:"filter_state_rules,omitempty"`
	// When set to true, bypass the `CORS preflight request
	// <http://www.w3.org/TR/cors/#cross-origin-request-with-preflight>`_ regardless of JWT
	// requirements specified in the rules.
	BypassCorsPreflight bool `protobuf:"varint,4,opt,name=bypass_cors_preflight,json=bypassCorsPreflight,proto3" json:"bypass_cors_preflight,omitempty"`
	// A map of unique requirement_names to JwtRequirements.
	// :ref:`requirement_name <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.PerRouteConfig.requirement_name>`
	// in “PerRouteConfig“ uses this map to specify a JwtRequirement.
	RequirementMap map[string]*JwtRequirement `protobuf:"bytes,5,rep,name=requirement_map,json=requirementMap,proto3" json:"requirement_map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// A request failing the verification process will receive a 401 downstream with the failure response details
	// in the body along with WWWAuthenticate header value set with "invalid token". If this value is set to true,
	// the response details will be stripped and only a 401 response code will be returned. Default value is false
	StripFailureResponse bool `protobuf:"varint,6,opt,name=strip_failure_response,json=stripFailureResponse,proto3" json:"strip_failure_response,omitempty"`
	// Optional additional prefix to use when emitting statistics.
	StatPrefix    string `protobuf:"bytes,7,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *JwtAuthentication) Reset() {
	*x = JwtAuthentication{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtAuthentication) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtAuthentication) ProtoMessage() {}

func (x *JwtAuthentication) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtAuthentication.ProtoReflect.Descriptor instead.
func (*JwtAuthentication) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{12}
}

func (x *JwtAuthentication) GetProviders() map[string]*JwtProvider {
	if x != nil {
		return x.Providers
	}
	return nil
}

func (x *JwtAuthentication) GetRules() []*RequirementRule {
	if x != nil {
		return x.Rules
	}
	return nil
}

func (x *JwtAuthentication) GetFilterStateRules() *FilterStateRule {
	if x != nil {
		return x.FilterStateRules
	}
	return nil
}

func (x *JwtAuthentication) GetBypassCorsPreflight() bool {
	if x != nil {
		return x.BypassCorsPreflight
	}
	return false
}

func (x *JwtAuthentication) GetRequirementMap() map[string]*JwtRequirement {
	if x != nil {
		return x.RequirementMap
	}
	return nil
}

func (x *JwtAuthentication) GetStripFailureResponse() bool {
	if x != nil {
		return x.StripFailureResponse
	}
	return false
}

func (x *JwtAuthentication) GetStatPrefix() string {
	if x != nil {
		return x.StatPrefix
	}
	return ""
}

// Specify per-route config.
type PerRouteConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to RequirementSpecifier:
	//
	//	*PerRouteConfig_Disabled
	//	*PerRouteConfig_RequirementName
	RequirementSpecifier isPerRouteConfig_RequirementSpecifier `protobuf_oneof:"requirement_specifier"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *PerRouteConfig) Reset() {
	*x = PerRouteConfig{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PerRouteConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PerRouteConfig) ProtoMessage() {}

func (x *PerRouteConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PerRouteConfig.ProtoReflect.Descriptor instead.
func (*PerRouteConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{13}
}

func (x *PerRouteConfig) GetRequirementSpecifier() isPerRouteConfig_RequirementSpecifier {
	if x != nil {
		return x.RequirementSpecifier
	}
	return nil
}

func (x *PerRouteConfig) GetDisabled() bool {
	if x != nil {
		if x, ok := x.RequirementSpecifier.(*PerRouteConfig_Disabled); ok {
			return x.Disabled
		}
	}
	return false
}

func (x *PerRouteConfig) GetRequirementName() string {
	if x != nil {
		if x, ok := x.RequirementSpecifier.(*PerRouteConfig_RequirementName); ok {
			return x.RequirementName
		}
	}
	return ""
}

type isPerRouteConfig_RequirementSpecifier interface {
	isPerRouteConfig_RequirementSpecifier()
}

type PerRouteConfig_Disabled struct {
	// Disable Jwt Authentication for this route.
	Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3,oneof"`
}

type PerRouteConfig_RequirementName struct {
	// Use requirement_name to specify a JwtRequirement.
	// This requirement_name MUST be specified at the
	// :ref:`requirement_map <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtAuthentication.requirement_map>`
	// in “JwtAuthentication“. If no, the requests using this route will be rejected with 403.
	RequirementName string `protobuf:"bytes,2,opt,name=requirement_name,json=requirementName,proto3,oneof"`
}

func (*PerRouteConfig_Disabled) isPerRouteConfig_RequirementSpecifier() {}

func (*PerRouteConfig_RequirementName) isPerRouteConfig_RequirementSpecifier() {}

// This message specifies a combination of header name and claim name.
type JwtClaimToHeader struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The HTTP header name to copy the claim to.
	// The header name will be sanitized and replaced.
	HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
	// The field name for the JWT Claim : it can be a nested claim of type (eg. "claim.nested.key", "sub")
	// String separated with "." in case of nested claims. The nested claim name must use dot "." to separate
	// the JSON name path.
	ClaimName     string `protobuf:"bytes,2,opt,name=claim_name,json=claimName,proto3" json:"claim_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *JwtClaimToHeader) Reset() {
	*x = JwtClaimToHeader{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtClaimToHeader) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtClaimToHeader) ProtoMessage() {}

func (x *JwtClaimToHeader) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtClaimToHeader.ProtoReflect.Descriptor instead.
func (*JwtClaimToHeader) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{14}
}

func (x *JwtClaimToHeader) GetHeaderName() string {
	if x != nil {
		return x.HeaderName
	}
	return ""
}

func (x *JwtClaimToHeader) GetClaimName() string {
	if x != nil {
		return x.ClaimName
	}
	return ""
}

// Alters the payload representation in the request dynamic metadata to facilitate its use in matching.
type JwtProvider_NormalizePayload struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Each claim in this list will be interpreted as a space-delimited string
	// and converted to a list of strings based on the delimited values.
	// Example: a token with a claim “scope: "email profile"“ is translated
	// to dynamic metadata  “scope: ["email", "profile"]“ if this field is
	// set value “["scope"]“. This special handling of “scope“ is
	// recommended by `RFC8693
	// <https://datatracker.ietf.org/doc/html/rfc8693#name-scope-scopes-claim>`_.
	SpaceDelimitedClaims []string `protobuf:"bytes,1,rep,name=space_delimited_claims,json=spaceDelimitedClaims,proto3" json:"space_delimited_claims,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *JwtProvider_NormalizePayload) Reset() {
	*x = JwtProvider_NormalizePayload{}
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *JwtProvider_NormalizePayload) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JwtProvider_NormalizePayload) ProtoMessage() {}

func (x *JwtProvider_NormalizePayload) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JwtProvider_NormalizePayload.ProtoReflect.Descriptor instead.
func (*JwtProvider_NormalizePayload) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP(), []int{0, 0}
}

func (x *JwtProvider_NormalizePayload) GetSpaceDelimitedClaims() []string {
	if x != nil {
		return x.SpaceDelimitedClaims
	}
	return nil
}

var File_envoy_extensions_filters_http_jwt_authn_v3_config_proto protoreflect.FileDescriptor

const file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc = "" +
	"\n" +
	"7envoy/extensions/filters/http/jwt_authn/v3/config.proto\x12*envoy.extensions.filters.http.jwt_authn.v3\x1a\x1fenvoy/config/core/v3/base.proto\x1a#envoy/config/core/v3/http_uri.proto\x1a,envoy/config/route/v3/route_components.proto\x1a\"envoy/type/matcher/v3/string.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xbe\v\n" +
	"\vJwtProvider\x12\x16\n" +
	"\x06issuer\x18\x01 \x01(\tR\x06issuer\x12\x1c\n" +
	"\taudiences\x18\x02 \x03(\tR\taudiences\x12@\n" +
	"\bsubjects\x18\x13 \x01(\v2$.envoy.type.matcher.v3.StringMatcherR\bsubjects\x12-\n" +
	"\x12require_expiration\x18\x14 \x01(\bR\x11requireExpiration\x12<\n" +
	"\fmax_lifetime\x18\x15 \x01(\v2\x19.google.protobuf.DurationR\vmaxLifetime\x12Y\n" +
	"\vremote_jwks\x18\x03 \x01(\v26.envoy.extensions.filters.http.jwt_authn.v3.RemoteJwksH\x00R\n" +
	"remoteJwks\x12A\n" +
	"\n" +
	"local_jwks\x18\x04 \x01(\v2 .envoy.config.core.v3.DataSourceH\x00R\tlocalJwks\x12\x18\n" +
	"\aforward\x18\x05 \x01(\bR\aforward\x12X\n" +
	"\ffrom_headers\x18\x06 \x03(\v25.envoy.extensions.filters.http.jwt_authn.v3.JwtHeaderR\vfromHeaders\x12\x1f\n" +
	"\vfrom_params\x18\a \x03(\tR\n" +
	"fromParams\x12!\n" +
	"\ffrom_cookies\x18\r \x03(\tR\vfromCookies\x12A\n" +
	"\x16forward_payload_header\x18\b \x01(\tB\v\xfaB\br\x06\xc8\x01\x00\xc0\x01\x01R\x14forwardPayloadHeader\x12;\n" +
	"\x1apad_forward_payload_header\x18\v \x01(\bR\x17padForwardPayloadHeader\x12.\n" +
	"\x13payload_in_metadata\x18\t \x01(\tR\x11payloadInMetadata\x12\x8b\x01\n" +
	"\x1dnormalize_payload_in_metadata\x18\x12 \x01(\v2H.envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.NormalizePayloadR\x1anormalizePayloadInMetadata\x12,\n" +
	"\x12header_in_metadata\x18\x0e \x01(\tR\x10headerInMetadata\x129\n" +
	"\x19failed_status_in_metadata\x18\x10 \x01(\tR\x16failedStatusInMetadata\x12,\n" +
	"\x12clock_skew_seconds\x18\n" +
	" \x01(\rR\x10clockSkewSeconds\x12d\n" +
	"\x10jwt_cache_config\x18\f \x01(\v2:.envoy.extensions.filters.http.jwt_authn.v3.JwtCacheConfigR\x0ejwtCacheConfig\x12f\n" +
	"\x10claim_to_headers\x18\x0f \x03(\v2<.envoy.extensions.filters.http.jwt_authn.v3.JwtClaimToHeaderR\x0eclaimToHeaders\x12*\n" +
	"\x11clear_route_cache\x18\x11 \x01(\bR\x0fclearRouteCache\x1aH\n" +
	"\x10NormalizePayload\x124\n" +
	"\x16space_delimited_claims\x18\x01 \x03(\tR\x14spaceDelimitedClaims:=\x9aň\x1e8\n" +
	"6envoy.config.filter.http.jwt_authn.v2alpha.JwtProviderB\x1c\n" +
	"\x15jwks_source_specifier\x12\x03\xf8B\x01\"c\n" +
	"\x0eJwtCacheConfig\x12$\n" +
	"\x0ejwt_cache_size\x18\x01 \x01(\rR\fjwtCacheSize\x12+\n" +
	"\x12jwt_max_token_size\x18\x02 \x01(\rR\x0fjwtMaxTokenSize\"\x89\x03\n" +
	"\n" +
	"RemoteJwks\x12B\n" +
	"\bhttp_uri\x18\x01 \x01(\v2\x1d.envoy.config.core.v3.HttpUriB\b\xfaB\x05\x8a\x01\x02\x10\x01R\ahttpUri\x12V\n" +
	"\x0ecache_duration\x18\x02 \x01(\v2\x19.google.protobuf.DurationB\x14\xfaB\x11\xaa\x01\x0e\x1a\x06\b\x80\xb4\xc4\xc3!2\x04\x10\xc0\x84=R\rcacheDuration\x12[\n" +
	"\vasync_fetch\x18\x03 \x01(\v2:.envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetchR\n" +
	"asyncFetch\x12D\n" +
	"\fretry_policy\x18\x04 \x01(\v2!.envoy.config.core.v3.RetryPolicyR\vretryPolicy:<\x9aň\x1e7\n" +
	"5envoy.config.filter.http.jwt_authn.v2alpha.RemoteJwks\"\x88\x01\n" +
	"\x0eJwksAsyncFetch\x12#\n" +
	"\rfast_listener\x18\x01 \x01(\bR\ffastListener\x12Q\n" +
	"\x17failed_refetch_duration\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\x15failedRefetchDuration\"\x9b\x01\n" +
	"\tJwtHeader\x12!\n" +
	"\x04name\x18\x01 \x01(\tB\r\xfaB\n" +
	"r\b\x10\x01\xc8\x01\x00\xc0\x01\x01R\x04name\x12.\n" +
	"\fvalue_prefix\x18\x02 \x01(\tB\v\xfaB\br\x06\xc8\x01\x00\xc0\x01\x02R\vvaluePrefix:;\x9aň\x1e6\n" +
	"4envoy.config.filter.http.jwt_authn.v2alpha.JwtHeader\"\xa3\x01\n" +
	"\x15ProviderWithAudiences\x12#\n" +
	"\rprovider_name\x18\x01 \x01(\tR\fproviderName\x12\x1c\n" +
	"\taudiences\x18\x02 \x03(\tR\taudiences:G\x9aň\x1eB\n" +
	"@envoy.config.filter.http.jwt_authn.v2alpha.ProviderWithAudiences\"\xf8\x05\n" +
	"\x0eJwtRequirement\x12%\n" +
	"\rprovider_name\x18\x01 \x01(\tH\x00R\fproviderName\x12y\n" +
	"\x16provider_and_audiences\x18\x02 \x01(\v2A.envoy.extensions.filters.http.jwt_authn.v3.ProviderWithAudiencesH\x00R\x14providerAndAudiences\x12e\n" +
	"\frequires_any\x18\x03 \x01(\v2@.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrListH\x00R\vrequiresAny\x12f\n" +
	"\frequires_all\x18\x04 \x01(\v2A.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndListH\x00R\vrequiresAll\x12O\n" +
	"\x17allow_missing_or_failed\x18\x05 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x14allowMissingOrFailed\x12=\n" +
	"\rallow_missing\x18\x06 \x01(\v2\x16.google.protobuf.EmptyH\x00R\fallowMissing\x12\x91\x01\n" +
	"\x1fextract_only_without_validation\x18\a \x01(\v2H.envoy.extensions.filters.http.jwt_authn.v3.ExtractOnlyWithoutValidationH\x00R\x1cextractOnlyWithoutValidation:@\x9aň\x1e;\n" +
	"9envoy.config.filter.http.jwt_authn.v2alpha.JwtRequirementB\x0f\n" +
	"\rrequires_type\"\\\n" +
	"\x1cExtractOnlyWithoutValidation\x12<\n" +
	"\x1averification_status_header\x18\x01 \x01(\tR\x18verificationStatusHeader\"\xc8\x01\n" +
	"\x14JwtRequirementOrList\x12h\n" +
	"\frequirements\x18\x01 \x03(\v2:.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementB\b\xfaB\x05\x92\x01\x02\b\x02R\frequirements:F\x9aň\x1eA\n" +
	"?envoy.config.filter.http.jwt_authn.v2alpha.JwtRequirementOrList\"\xca\x01\n" +
	"\x15JwtRequirementAndList\x12h\n" +
	"\frequirements\x18\x01 \x03(\v2:.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementB\b\xfaB\x05\x92\x01\x02\b\x02R\frequirements:G\x9aň\x1eB\n" +
	"@envoy.config.filter.http.jwt_authn.v2alpha.JwtRequirementAndList\"\xbb\x02\n" +
	"\x0fRequirementRule\x12A\n" +
	"\x05match\x18\x01 \x01(\v2!.envoy.config.route.v3.RouteMatchB\b\xfaB\x05\x8a\x01\x02\x10\x01R\x05match\x12X\n" +
	"\brequires\x18\x02 \x01(\v2:.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementH\x00R\brequires\x124\n" +
	"\x10requirement_name\x18\x03 \x01(\tB\a\xfaB\x04r\x02\x10\x01H\x00R\x0frequirementName:A\x9aň\x1e<\n" +
	":envoy.config.filter.http.jwt_authn.v2alpha.RequirementRuleB\x12\n" +
	"\x10requirement_type\"\xd1\x02\n" +
	"\x0fFilterStateRule\x12\x1b\n" +
	"\x04name\x18\x01 \x01(\tB\a\xfaB\x04r\x02\x10\x01R\x04name\x12e\n" +
	"\brequires\x18\x03 \x03(\v2I.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntryR\brequires\x1aw\n" +
	"\rRequiresEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12P\n" +
	"\x05value\x18\x02 \x01(\v2:.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementR\x05value:\x028\x01:A\x9aň\x1e<\n" +
	":envoy.config.filter.http.jwt_authn.v2alpha.FilterStateRule\"\xff\x06\n" +
	"\x11JwtAuthentication\x12j\n" +
	"\tproviders\x18\x01 \x03(\v2L.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntryR\tproviders\x12Q\n" +
	"\x05rules\x18\x02 \x03(\v2;.envoy.extensions.filters.http.jwt_authn.v3.RequirementRuleR\x05rules\x12i\n" +
	"\x12filter_state_rules\x18\x03 \x01(\v2;.envoy.extensions.filters.http.jwt_authn.v3.FilterStateRuleR\x10filterStateRules\x122\n" +
	"\x15bypass_cors_preflight\x18\x04 \x01(\bR\x13bypassCorsPreflight\x12z\n" +
	"\x0frequirement_map\x18\x05 \x03(\v2Q.envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntryR\x0erequirementMap\x124\n" +
	"\x16strip_failure_response\x18\x06 \x01(\bR\x14stripFailureResponse\x12\x1f\n" +
	"\vstat_prefix\x18\a \x01(\tR\n" +
	"statPrefix\x1au\n" +
	"\x0eProvidersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12M\n" +
	"\x05value\x18\x02 \x01(\v27.envoy.extensions.filters.http.jwt_authn.v3.JwtProviderR\x05value:\x028\x01\x1a}\n" +
	"\x13RequirementMapEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12P\n" +
	"\x05value\x18\x02 \x01(\v2:.envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementR\x05value:\x028\x01:C\x9aň\x1e>\n" +
	"<envoy.config.filter.http.jwt_authn.v2alpha.JwtAuthentication\"\x8b\x01\n" +
	"\x0ePerRouteConfig\x12%\n" +
	"\bdisabled\x18\x01 \x01(\bB\a\xfaB\x04j\x02\b\x01H\x00R\bdisabled\x124\n" +
	"\x10requirement_name\x18\x02 \x01(\tB\a\xfaB\x04r\x02\x10\x01H\x00R\x0frequirementNameB\x1c\n" +
	"\x15requirement_specifier\x12\x03\xf8B\x01\"j\n" +
	"\x10JwtClaimToHeader\x12.\n" +
	"\vheader_name\x18\x01 \x01(\tB\r\xfaB\n" +
	"r\b\x10\x01\xc8\x01\x00\xc0\x01\x01R\n" +
	"headerName\x12&\n" +
	"\n" +
	"claim_name\x18\x02 \x01(\tB\a\xfaB\x04r\x02\x10\x01R\tclaimNameB\xb0\x01\xba\x80\xc8\xd1\x06\x02\x10\x02\n" +
	"8io.envoyproxy.envoy.extensions.filters.http.jwt_authn.v3B\vConfigProtoP\x01Z]github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/jwt_authn/v3;jwt_authnv3b\x06proto3"

var (
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescOnce sync.Once
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData []byte
)

func file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescGZIP() []byte {
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescOnce.Do(func() {
		file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc), len(file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc)))
	})
	return file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDescData
}

var file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
var file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_goTypes = []any{
	(*JwtProvider)(nil),                  // 0: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider
	(*JwtCacheConfig)(nil),               // 1: envoy.extensions.filters.http.jwt_authn.v3.JwtCacheConfig
	(*RemoteJwks)(nil),                   // 2: envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks
	(*JwksAsyncFetch)(nil),               // 3: envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetch
	(*JwtHeader)(nil),                    // 4: envoy.extensions.filters.http.jwt_authn.v3.JwtHeader
	(*ProviderWithAudiences)(nil),        // 5: envoy.extensions.filters.http.jwt_authn.v3.ProviderWithAudiences
	(*JwtRequirement)(nil),               // 6: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement
	(*ExtractOnlyWithoutValidation)(nil), // 7: envoy.extensions.filters.http.jwt_authn.v3.ExtractOnlyWithoutValidation
	(*JwtRequirementOrList)(nil),         // 8: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList
	(*JwtRequirementAndList)(nil),        // 9: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList
	(*RequirementRule)(nil),              // 10: envoy.extensions.filters.http.jwt_authn.v3.RequirementRule
	(*FilterStateRule)(nil),              // 11: envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule
	(*JwtAuthentication)(nil),            // 12: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication
	(*PerRouteConfig)(nil),               // 13: envoy.extensions.filters.http.jwt_authn.v3.PerRouteConfig
	(*JwtClaimToHeader)(nil),             // 14: envoy.extensions.filters.http.jwt_authn.v3.JwtClaimToHeader
	(*JwtProvider_NormalizePayload)(nil), // 15: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.NormalizePayload
	nil,                                  // 16: envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry
	nil,                                  // 17: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry
	nil,                                  // 18: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry
	(*v3.StringMatcher)(nil),             // 19: envoy.type.matcher.v3.StringMatcher
	(*durationpb.Duration)(nil),          // 20: google.protobuf.Duration
	(*v31.DataSource)(nil),               // 21: envoy.config.core.v3.DataSource
	(*v31.HttpUri)(nil),                  // 22: envoy.config.core.v3.HttpUri
	(*v31.RetryPolicy)(nil),              // 23: envoy.config.core.v3.RetryPolicy
	(*emptypb.Empty)(nil),                // 24: google.protobuf.Empty
	(*v32.RouteMatch)(nil),               // 25: envoy.config.route.v3.RouteMatch
}
var file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_depIdxs = []int32{
	19, // 0: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.subjects:type_name -> envoy.type.matcher.v3.StringMatcher
	20, // 1: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.max_lifetime:type_name -> google.protobuf.Duration
	2,  // 2: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.remote_jwks:type_name -> envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks
	21, // 3: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.local_jwks:type_name -> envoy.config.core.v3.DataSource
	4,  // 4: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.from_headers:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtHeader
	15, // 5: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.normalize_payload_in_metadata:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.NormalizePayload
	1,  // 6: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.jwt_cache_config:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtCacheConfig
	14, // 7: envoy.extensions.filters.http.jwt_authn.v3.JwtProvider.claim_to_headers:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtClaimToHeader
	22, // 8: envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.http_uri:type_name -> envoy.config.core.v3.HttpUri
	20, // 9: envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.cache_duration:type_name -> google.protobuf.Duration
	3,  // 10: envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.async_fetch:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetch
	23, // 11: envoy.extensions.filters.http.jwt_authn.v3.RemoteJwks.retry_policy:type_name -> envoy.config.core.v3.RetryPolicy
	20, // 12: envoy.extensions.filters.http.jwt_authn.v3.JwksAsyncFetch.failed_refetch_duration:type_name -> google.protobuf.Duration
	5,  // 13: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.provider_and_audiences:type_name -> envoy.extensions.filters.http.jwt_authn.v3.ProviderWithAudiences
	8,  // 14: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.requires_any:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList
	9,  // 15: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.requires_all:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList
	24, // 16: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.allow_missing_or_failed:type_name -> google.protobuf.Empty
	24, // 17: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.allow_missing:type_name -> google.protobuf.Empty
	7,  // 18: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement.extract_only_without_validation:type_name -> envoy.extensions.filters.http.jwt_authn.v3.ExtractOnlyWithoutValidation
	6,  // 19: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementOrList.requirements:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement
	6,  // 20: envoy.extensions.filters.http.jwt_authn.v3.JwtRequirementAndList.requirements:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement
	25, // 21: envoy.extensions.filters.http.jwt_authn.v3.RequirementRule.match:type_name -> envoy.config.route.v3.RouteMatch
	6,  // 22: envoy.extensions.filters.http.jwt_authn.v3.RequirementRule.requires:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement
	16, // 23: envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.requires:type_name -> envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry
	17, // 24: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.providers:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry
	10, // 25: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.rules:type_name -> envoy.extensions.filters.http.jwt_authn.v3.RequirementRule
	11, // 26: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.filter_state_rules:type_name -> envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule
	18, // 27: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.requirement_map:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry
	6,  // 28: envoy.extensions.filters.http.jwt_authn.v3.FilterStateRule.RequiresEntry.value:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement
	0,  // 29: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.ProvidersEntry.value:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtProvider
	6,  // 30: envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication.RequirementMapEntry.value:type_name -> envoy.extensions.filters.http.jwt_authn.v3.JwtRequirement
	31, // [31:31] is the sub-list for method output_type
	31, // [31:31] is the sub-list for method input_type
	31, // [31:31] is the sub-list for extension type_name
	31, // [31:31] is the sub-list for extension extendee
	0,  // [0:31] is the sub-list for field type_name
}

func init() { file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_init() }
func file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_init() {
	if File_envoy_extensions_filters_http_jwt_authn_v3_config_proto != nil {
		return
	}
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[0].OneofWrappers = []any{
		(*JwtProvider_RemoteJwks)(nil),
		(*JwtProvider_LocalJwks)(nil),
	}
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[6].OneofWrappers = []any{
		(*JwtRequirement_ProviderName)(nil),
		(*JwtRequirement_ProviderAndAudiences)(nil),
		(*JwtRequirement_RequiresAny)(nil),
		(*JwtRequirement_RequiresAll)(nil),
		(*JwtRequirement_AllowMissingOrFailed)(nil),
		(*JwtRequirement_AllowMissing)(nil),
		(*JwtRequirement_ExtractOnlyWithoutValidation)(nil),
	}
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[10].OneofWrappers = []any{
		(*RequirementRule_Requires)(nil),
		(*RequirementRule_RequirementName)(nil),
	}
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes[13].OneofWrappers = []any{
		(*PerRouteConfig_Disabled)(nil),
		(*PerRouteConfig_RequirementName)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc), len(file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   19,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_goTypes,
		DependencyIndexes: file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_depIdxs,
		MessageInfos:      file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_msgTypes,
	}.Build()
	File_envoy_extensions_filters_http_jwt_authn_v3_config_proto = out.File
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_goTypes = nil
	file_envoy_extensions_filters_http_jwt_authn_v3_config_proto_depIdxs = nil
}
