SuccessfulAuthentication

Struct SuccessfulAuthentication 

Source
pub struct SuccessfulAuthentication {
    pub client_key: PublicKey,
    pub mechanism: Mechanism,
}
Available on crate feature server only.
Expand description

Result of a successful authentication handshake.

This struct represents a client that has successfully authenticated itself to the relay server. The authorization must still be confirmed by calling Self::authorize_if to complete the protocol and notify the client of success or failure.

Fields§

§client_key: PublicKey

The authenticated client’s public key.

§mechanism: Mechanism

The authentication mechanism that was used.

Implementations§

Source§

impl SuccessfulAuthentication

Source

pub async fn authorize_with( self, request: &ClientRequest, access_control: &Arc<dyn DynAccessControl>, io: &mut (impl BytesStreamSink + ExportKeyingMaterial), ) -> Result<OnDisconnectGuard, Error>

Authorizes a ClientRequest and completes the authorization protocol.

This invokes AccessControl::on_connect with the ClientRequest and informs the client about the authorization decision.

Returns OnDisconnectGuard in case the authorization was successful and the confirmation message was sent to the client. The handshake protocol is now complete.

Returns an error if the authorization failed or if the confirmation message could not be sent.

Source

pub async fn authorize_if( self, access: Access, io: &mut (impl BytesStreamSink + ExportKeyingMaterial), ) -> Result<PublicKey, Error>

Completes the authorization protocol by notifying the client of success or failure.

After a client has been successfully authenticated via serverside, the server must decide whether to authorize the client (allow access) or deny it. This method sends the authorization decision to the client and completes the handshake protocol.

§Arguments
  • access - Whether to grant access to the authenticated client
  • io - The WebSocket stream to send the authorization response on
§Returns
  • Ok(PublicKey) - The client’s public key if authorization was granted
  • Err(Error) - If authorization was denied or communication failed

Trait Implementations§

Source§

impl Debug for SuccessfulAuthentication

Source§

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

Formats the value using the given formatter. 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
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: 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, 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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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