pub struct UnsecuredJwsValidator {
pub principal_claim_name: String,
pub allowable_clock_skew: Time,
pub custom_claim_check: Option<JpQuery>,
pub valid_token_type: Option<String>,
pub fallback_user_name_claim: Option<String>,
pub fallback_user_name_prefix: Option<String>,
pub groups_claim: Option<JpQuery>,
pub groups_claim_delimiter: Option<String>,
pub scope_claim_name: String,
pub required_scope: Vec<String>,
}Expand description
Validates an unsecured JWS bearer token (alg: none) and derives the
connection principal. Mirrors Kafka’s
OAuthBearerUnsecuredValidatorCallbackHandler.
Fields§
§principal_claim_name: StringClaim whose string value becomes the principal name. Default sub.
allowable_clock_skew: TimeTolerance applied to the exp / iat temporal checks to absorb clock
drift between the client and broker. Default 0, Kafka’s
unsecuredValidatorAllowableClockSkewMs.
custom_claim_check: Option<JpQuery>Precompiled JsonPath expression that the validator evaluates against
the token’s claim set. The validator rejects the token when the
expression yields empty/null/false. Compile it once at validator
construction.
valid_token_type: Option<String>When set, the JWT typ header field must equal this
string. The validator ignores this field when unset.
fallback_user_name_claim: Option<String>Alternate claim name to read the principal name from
when principal_claim_name is absent or empty. Strimzi calls this the
“service-account fallback”: sub typically holds a UUID, and
client_id is the readable name.
fallback_user_name_prefix: Option<String>Prepended to the resolved principal name ONLY when the fallback claim fires. Strimzi convention: “service-account-”.
groups_claim: Option<JpQuery>Precompiled JsonPath expression that extracts group
memberships from the token claims. Compile it once at startup.
groups_claim_delimiter: Option<String>When groups_claim resolves to a string and not an
array, split on this delimiter. Common values: “,” or “ “.
scope_claim_name: StringClaim that holds the token’s scope, Kafka’s
unsecuredValidatorScopeClaimName. Default scope.
required_scope: Vec<String>Scope items the token must all carry, Kafka’s
unsecuredValidatorRequiredScope. Empty, the default, requires none.
parse_required_scope reads the option’s space-delimited value.
Implementations§
Source§impl UnsecuredJwsValidator
impl UnsecuredJwsValidator
Sourcepub fn validate(
&self,
token: &str,
now_ms: i64,
) -> Result<AuthOutcome, AuthError>
pub fn validate( &self, token: &str, now_ms: i64, ) -> Result<AuthOutcome, AuthError>
Validate token against now_ms and return the authenticated
Principal on success.
now_ms is Unix epoch milliseconds.
§Errors
AuthError::InvalidToken for any structural, signature, temporal,
scope-claim, or principal-claim failure, and
AuthError::InsufficientScope for an otherwise valid token that lacks
an item of required_scope. Kafka’s
OAuthBearerUnsecuredValidatorCallbackHandler makes the same split.
oauth_error_json renders either one as the RFC 7628 server error
challenge.
Trait Implementations§
Source§impl Clone for UnsecuredJwsValidator
impl Clone for UnsecuredJwsValidator
Source§fn clone(&self) -> UnsecuredJwsValidator
fn clone(&self) -> UnsecuredJwsValidator
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UnsecuredJwsValidator
impl Debug for UnsecuredJwsValidator
Source§impl Default for UnsecuredJwsValidator
impl Default for UnsecuredJwsValidator
Source§impl PartialEq for UnsecuredJwsValidator
impl PartialEq for UnsecuredJwsValidator
Source§fn eq(&self, other: &UnsecuredJwsValidator) -> bool
fn eq(&self, other: &UnsecuredJwsValidator) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for UnsecuredJwsValidator
Auto Trait Implementations§
impl Freeze for UnsecuredJwsValidator
impl RefUnwindSafe for UnsecuredJwsValidator
impl Send for UnsecuredJwsValidator
impl Sync for UnsecuredJwsValidator
impl Unpin for UnsecuredJwsValidator
impl UnsafeUnpin for UnsecuredJwsValidator
impl UnwindSafe for UnsecuredJwsValidator
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);