pub struct MtlsConsumerMapping {
pub enabled: bool,
pub consumers: Vec<MtlsFingerprintMapping>,
pub subject_cn_mapping: BTreeMap<String, String>,
}Expand description
mTLS client-certificate consumer mapping (DW-035,
gateway.mtls_consumer_mapping).
Maps a VERIFIED client certificate to a consumer name by its
SHA-256 fingerprint (lowercase colon-separated hex of the DER) or
by subject CommonName. When enabled and a client presents a
certificate that chains to a listener’s client_ca_file but
matches NO entry in this table, the gateway returns 401
mtls_consumer_not_mapped (the certificate was verified but is not
a known caller). A client that presents NO certificate on a
listener with this mapping enabled falls through to the other
authentication families (or 401 if the route requires auth and no
family resolves).
Fields§
§enabled: boolMaster switch. Default false: the mapping is inert and mTLS
certificates are matched only through consumers’ mtls
credentials (the DW-019 path).
consumers: Vec<MtlsFingerprintMapping>Fingerprint-to-consumer entries. Each fingerprint is the
SHA-256 of the client certificate DER as lowercase
colon-separated hex (e.g. ab:cd:ef:...). The fingerprint is
the EXACT bytes the gateway computes from the presented
certificate, so a re-issued certificate needs a new entry.
subject_cn_mapping: BTreeMap<String, String>Subject-CN-to-consumer mapping (alternative to consumers):
maps the certificate’s subject CommonName to a consumer name.
Binding by subject CN survives certificate re-issue under the
same CN; the certificate must still chain to a listener’s
client_ca_file. Keys are exact, case-sensitive CN strings.
Trait Implementations§
Source§impl Clone for MtlsConsumerMapping
impl Clone for MtlsConsumerMapping
Source§fn clone(&self) -> MtlsConsumerMapping
fn clone(&self) -> MtlsConsumerMapping
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MtlsConsumerMapping
impl Debug for MtlsConsumerMapping
Source§impl<'de> Deserialize<'de> for MtlsConsumerMapping
impl<'de> Deserialize<'de> for MtlsConsumerMapping
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for MtlsConsumerMapping
impl JsonSchema for MtlsConsumerMapping
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for MtlsConsumerMapping
impl PartialEq for MtlsConsumerMapping
Source§impl Serialize for MtlsConsumerMapping
impl Serialize for MtlsConsumerMapping
impl StructuralPartialEq for MtlsConsumerMapping
Auto Trait Implementations§
impl Freeze for MtlsConsumerMapping
impl RefUnwindSafe for MtlsConsumerMapping
impl Send for MtlsConsumerMapping
impl Sync for MtlsConsumerMapping
impl Unpin for MtlsConsumerMapping
impl UnwindSafe for MtlsConsumerMapping
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more