Skip to main content

ProxyToken

Struct ProxyToken 

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

The minted proxy token, as a header map (TRAP-7).

§Why a map rather than a string

Because that is what the service answers: authToken is a TokenParts map, and the value at X-aws-proxy-auth is the header value. A client that treated the response as a string would send a stringified map and get a rejection that reads like a bad token.

ProxyToken::headers always emits both headers, which is the other half of the same trap: X-aws-proxy-auth without X-aws-proxy-port is rejected the same indistinguishable way.

Implementations§

Source§

impl ProxyToken

Source

pub fn from_map( map: &BTreeMap<String, String>, port: u16, ) -> Result<Self, Error>

Reads the token out of the service’s authToken map.

A missing X-aws-proxy-auth key is ErrorKind::Retryable via crate::error::WireKind::AuthTokenMint: minting is inside the request retry path (TRAP-9), and a throttle at minute 30 of a long run must not kill a trial that is otherwise healthy.

Source

pub fn from_operation_map( operation: &str, map: &BTreeMap<String, String>, port: u16, ) -> Result<Self, Error>

ProxyToken::from_map, naming the operation whose response the map came from.

The shell mint reads the same TokenParts shape out of CreateMicrovmShellAuthToken, and a missing-key failure that blamed the ordinary mint would send the reader to the wrong operation’s response.

Source

pub fn headers(&self) -> [(&'static str, String); 2]

Both headers every endpoint request needs.

Both, always. See the type docs: sending only the auth header is rejected in a way that reads like a bad token.

Source

pub fn value(&self) -> &str

The raw token value.

Source

pub fn port(&self) -> u16

The port the token was minted for.

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 headers and the port, never the token value.

A minted proxy token is a credential, and a derived Debug would print it into every log line that formats a ProxyToken, a RunMicrovmRequest holding one, or an error chain containing either. The sibling type in crate::session::proxy made this choice first; this is the same rule on the control-plane side of the conversion.

Source§

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

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

impl Eq for ProxyToken

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) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for ProxyToken

Source§

fn eq(&self, other: &ProxyToken) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ProxyToken

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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