Struct wasm_oidc_plugin::cookie::Session

source ·
pub struct Session {
    pub authorization_state: Option<AuthorizationState>,
    pub original_path: String,
    pub code_verifier: String,
    pub state: String,
}
Expand description

Struct that holds all information about the current session including the authorization state, the original path, the PKCE code verifier and the state

Fields§

§authorization_state: Option<AuthorizationState>

Authorization state

§original_path: String

Original Path to which the user should be redirected after login

§code_verifier: String

PKCE Code Verifier used to generate the PKCE Code Challenge

§state: String

State used to prevent CSRF attacks

Implementations§

source§

impl Session

source

pub fn encrypt_and_encode( &self, cipher: Aes256Gcm, ) -> Result<(String, String), PluginError>

Create a new session, encrypt it and encode it by using the given cipher

  • cipher - Cipher used to encrypt the cookie

Returns:

  • the base64 encoded encrypted session data
  • the base64 encoded nonce needed to decrypt it

Make the cookie values from the encoded cookie by splitting it into chunks of 4000 bytes and then building the values to be set in the Set-Cookie headers

  • encoded_cookie - Encoded cookie to be split into chunks of 4000 bytes
  • encoded_nonce - Base64 encoded nonce needed to decrypt the cookie
  • cookie_name - Name of the cookie
  • cookie_duration - Duration of the cookie in seconds
  • number_current_cookies - Number of cookies that are currently set (important because otherwise decryption will fail if older and expired cookies are still present)

Make the Set-Cookie headers from the cookie values

  • cookie_values - Cookie values to be set in the Set-Cookie headers
source

pub fn decode_and_decrypt( encoded_cookie: String, cipher: Aes256Gcm, encoded_nonce: String, ) -> Result<Session, PluginError>

Decode cookie, parse into a struct in order to access the fields

  • encoded_cookie - Encoded cookie to be decoded and parsed into a struct
  • cipher - Cipher used to decrypt the cookie
  • encoded_nonce - Nonce used to decrypt the cookie

Trait Implementations§

source§

impl Clone for Session

source§

fn clone(&self) -> Session

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for Session

source§

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

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

impl<'de> Deserialize<'de> for Session

source§

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 Serialize for Session

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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, dst: *mut T)

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

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,