Skip to main content

ProxyToken

Struct ProxyToken 

Source
pub struct ProxyToken { /* private fields */ }
Expand description

The minted token, as the control plane returns it: a map of header name to value.

Deliberately opaque. There is no as_str, no Display, and no Deref, because the TRAP-7 mistake is treating this value as the token string — and a type that cannot be printed as one cannot be used as one. ProxyToken::auth_value is the only way out, and it names the header it reads so the call site says which key of the map it means.

Implementations§

Source§

impl ProxyToken

Source

pub fn new(headers: HashMap<String, String>) -> ProxyToken

Wraps the authToken map from a CreateMicrovmAuthToken response.

Source

pub fn from_pairs<I, K, V>(pairs: I) -> ProxyToken
where I: IntoIterator<Item = (K, V)>, K: Into<String>, V: Into<String>,

The map as pairs, for a caller that already has them.

Source

pub fn get(&self, name: &str) -> Option<&str>

One header’s value, matched case-insensitively.

Case-insensitively because HTTP header names are, and the map’s keys come from a service response rather than from this crate: a client that matched X-aws-proxy-auth exactly would break on a response that spelled it x-aws-proxy-auth, and the failure would be a missing header rather than a missing key.

Source

pub fn headers(&self) -> impl Iterator<Item = (&str, &str)>

Every header the token carries, in unspecified order.

Public because the platform’s stated reason for a map is that a scheme may need more than one header, so a client that forwarded only the two it knows about would silently drop a third the service started sending.

Source

pub fn auth_value(&self) -> Result<&str, Error>

The PROXY_AUTH_HEADER value, or a retryable mint failure if the map has no such key.

Retryable rather than a protocol error: an authToken map without the auth header is a control-plane response this client cannot use, which is the same situation as a mint that failed outright, and the same remedy applies.

Source

pub fn is_empty(&self) -> bool

Whether the map carries anything at all.

Trait Implementations§

Source§

impl Clone for ProxyToken

Source§

fn clone(&self) -> ProxyToken

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ProxyToken

Names the keys and never the values.

A proxy token is a credential, and a Debug that printed it would put it in every log line that formats a ProxyAuth or an error chain containing one.

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for ProxyToken

Source§

fn default() -> ProxyToken

Returns the “default value” for a type. Read more
Source§

impl From<ProxyToken> for ProxyToken

The seam to the control plane’s own token type.

The two lanes that landed this module and crate::control arrived at the same trap closure from different directions: control::ProxyToken keeps the auth value and the port as two fields and emits a fixed pair from headers(), while this one keeps the service’s whole map so a third header the platform adds later rides along without a code change. Neither is wrong, and unifying them would mean one lane editing the other’s module.

So the conversion lives here, which is the side that consumes it. It is the whole of what a caller needs to hand ControlPlane::mint_auth_token’s result to a TokenMinter, and it is From rather than a named function so the wiring is one .into() at the boundary.

Source§

fn from(token: ProxyToken) -> ProxyToken

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more