pub struct LoginClient { /* private fields */ }Expand description
Client for authenticating Bitwarden users.
Handles unauthenticated operations to obtain access tokens from the Identity API. After successful authentication, use the returned tokens to create an authenticated core client.
§Lifecycle
- Create
LoginClientviaAuthClient - Call login method
- Use returned tokens with authenticated core client
§Password Login Example
// Create auth client
let client = Client::new(None);
let auth_client = AuthClient::new(client);
// Configure client settings and create login client
let settings = ClientSettings {
identity_url: "https://identity.bitwarden.com".to_string(),
api_url: "https://api.bitwarden.com".to_string(),
user_agent: "MyApp/1.0".to_string(),
device_type: DeviceType::SDK,
device_identifier: None,
bitwarden_client_version: None,
bitwarden_package_type: None,
};
let login_client = auth_client.login(settings);
// Get user's KDF config
let prelogin = login_client.get_password_prelogin(email.clone()).await?;
// Login with credentials
let response = login_client.login_via_password(PasswordLoginRequest {
login_request: LoginRequest {
client_id: "connector".to_string(),
device: LoginDeviceRequest {
device_type: DeviceType::SDK,
device_identifier: "device-id".to_string(),
device_name: "My Device".to_string(),
device_push_token: None,
},
},
email,
password,
prelogin_response: prelogin,
}).await?;
// Use tokens from response for authenticated requests
match response {
LoginResponse::Authenticated(success) => {
let access_token = success.access_token;
// Use access_token for authenticated requests
}
}Implementations§
Source§impl LoginClient
impl LoginClient
Sourcepub async fn login_via_password(
&self,
request: PasswordLoginRequest,
) -> Result<LoginResponse, PasswordLoginError>
pub async fn login_via_password( &self, request: PasswordLoginRequest, ) -> Result<LoginResponse, PasswordLoginError>
Authenticates a user via email and master password.
Derives the master password hash using KDF settings from prelogin, then sends the authentication request to obtain access tokens and vault keys.
Source§impl LoginClient
impl LoginClient
Sourcepub async fn get_password_prelogin(
&self,
email: String,
) -> Result<PasswordPreloginResponse, PasswordPreloginError>
pub async fn get_password_prelogin( &self, email: String, ) -> Result<PasswordPreloginResponse, PasswordPreloginError>
Retrieves the data required before authenticating with a password. This includes the user’s KDF configuration needed to properly derive the master key.
Auto Trait Implementations§
impl Freeze for LoginClient
impl !RefUnwindSafe for LoginClient
impl Send for LoginClient
impl Sync for LoginClient
impl Unpin for LoginClient
impl UnsafeUnpin for LoginClient
impl !UnwindSafe for LoginClient
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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