pub struct UntrustedToken<H = Empty> { /* private fields */ }Expand description
Parsed, but unvalidated token.
The type param (Empty by default) corresponds to the additional information enclosed
in the token Header.
An UntrustedToken can be parsed from a string using the TryFrom implementation.
This checks that a token is well-formed (has a header, claims and a signature),
but does not validate the signature.
As a shortcut, a token without additional header info can be created using Self::new().
§Examples
let token_str = "eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJp\
c3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leG\
FtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJ\
U1p1r_wW1gFWFOEjXk";
let token: UntrustedToken = token_str.try_into()?;
// The same operation using a shortcut:
let same_token = UntrustedToken::new(token_str)?;
// Token header can be accessed to select the verifying key etc.
let key_id: Option<&str> = token.header().key_id.as_deref();§Handling tokens with custom header fields
#[derive(Debug, Clone, Deserialize)]
struct HeaderExtensions {
custom: String,
}
let token_str = "eyJhbGciOiJIUzI1NiIsImtpZCI6InRlc3Rfa2V5Iiwid\
HlwIjoiSldUIiwiY3VzdG9tIjoiY3VzdG9tIn0.eyJzdWIiOiIxMjM0NTY\
3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9._27Fb6nF\
Tg-HSt3vO4ylaLGcU_ZV2VhMJR4HL7KaQik";
let token: UntrustedToken<HeaderExtensions> = token_str.try_into()?;
let extensions = &token.header().other_fields;
println!("{}", extensions.custom);Implementations§
Source§impl<'a> UntrustedToken
impl<'a> UntrustedToken
Source§impl<H> UntrustedToken<H>
impl<H> UntrustedToken<H>
Sourcepub fn into_owned(self) -> Self
pub fn into_owned(self) -> Self
Converts this token to an owned form.
Sourcepub fn signature_bytes(&self) -> &[u8] ⓘ
pub fn signature_bytes(&self) -> &[u8] ⓘ
Returns signature bytes from the token. These bytes are not guaranteed to form a valid signature.
Sourcepub fn deserialize_claims_unchecked<T>(
&self,
) -> Result<Claims<T>, ValidationError>where
T: DeserializeOwned,
pub fn deserialize_claims_unchecked<T>(
&self,
) -> Result<Claims<T>, ValidationError>where
T: DeserializeOwned,
Deserializes claims from this token without checking token integrity. The resulting claims are thus not guaranteed to be valid.
Trait Implementations§
Source§impl<H: Clone> Clone for UntrustedToken<H>
impl<H: Clone> Clone for UntrustedToken<H>
Source§fn clone(&self) -> UntrustedToken<H>
fn clone(&self) -> UntrustedToken<H>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<H: Debug> Debug for UntrustedToken<H>
impl<H: Debug> Debug for UntrustedToken<H>
Source§impl<H> Decode for UntrustedToken<H>
impl<H> Decode for UntrustedToken<H>
Source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy, ) -> Result<Self, Error>
Attempt to deserialise the value from input.
Source§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
Source§impl<'de, H> Deserialize<'de> for UntrustedToken<H>where
H: Deserialize<'de>,
impl<'de, H> Deserialize<'de> for UntrustedToken<H>where
H: Deserialize<'de>,
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<H> Encode for UntrustedToken<H>
impl<H> Encode for UntrustedToken<H>
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
Source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )
Convert self to a slice and append it to the destination.
Source§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
Convert self to a slice and then invoke the given closure with it.
Source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
Source§impl<H> MaxEncodedLen for UntrustedToken<H>where
Header<H>: MaxEncodedLen,
impl<H> MaxEncodedLen for UntrustedToken<H>where
Header<H>: MaxEncodedLen,
Source§fn max_encoded_len() -> usize
fn max_encoded_len() -> usize
Upper bound, in bytes, of the maximum encoded size of this item.
Source§impl<H: PartialEq> PartialEq for UntrustedToken<H>
impl<H: PartialEq> PartialEq for UntrustedToken<H>
Source§impl<H> Serialize for UntrustedToken<H>where
H: Serialize,
impl<H> Serialize for UntrustedToken<H>where
H: Serialize,
Source§impl<'a, H: DeserializeOwned> TryFrom<&'a str> for UntrustedToken<H>
impl<'a, H: DeserializeOwned> TryFrom<&'a str> for UntrustedToken<H>
Source§impl<H> TypeInfo for UntrustedToken<H>
impl<H> TypeInfo for UntrustedToken<H>
impl<H> EncodeLike for UntrustedToken<H>
impl<H: Eq> Eq for UntrustedToken<H>
impl<H> StructuralPartialEq for UntrustedToken<H>
Auto Trait Implementations§
impl<H> Freeze for UntrustedToken<H>where
H: Freeze,
impl<H> RefUnwindSafe for UntrustedToken<H>where
H: RefUnwindSafe,
impl<H> Send for UntrustedToken<H>where
H: Send,
impl<H> Sync for UntrustedToken<H>where
H: Sync,
impl<H> Unpin for UntrustedToken<H>where
H: Unpin,
impl<H> UnwindSafe for UntrustedToken<H>where
H: UnwindSafe,
Blanket Implementations§
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
Mutably borrows from an owned value. Read more