mirror of
https://github.com/lldap/lldap.git
synced 2026-07-25 17:58:44 +00:00
server: Add logging for password resets, add name for successful opaque logins
This commit is contained in:
committed by
nitnelave
parent
0c6a92a8fa
commit
1f3f73585b
@@ -9,10 +9,9 @@ use super::{
|
|||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use base64::Engine;
|
use base64::Engine;
|
||||||
use lldap_auth::opaque;
|
use lldap_auth::opaque;
|
||||||
use log::info;
|
|
||||||
use sea_orm::{ActiveModelTrait, ActiveValue, EntityTrait, QuerySelect};
|
use sea_orm::{ActiveModelTrait, ActiveValue, EntityTrait, QuerySelect};
|
||||||
use secstr::SecUtf8;
|
use secstr::SecUtf8;
|
||||||
use tracing::{debug, instrument};
|
use tracing::{debug, info, instrument, warn};
|
||||||
|
|
||||||
type SqlOpaqueHandler = SqlBackendHandler;
|
type SqlOpaqueHandler = SqlBackendHandler;
|
||||||
|
|
||||||
@@ -103,6 +102,7 @@ impl OpaqueHandler for SqlOpaqueHandler {
|
|||||||
request: login::ClientLoginStartRequest,
|
request: login::ClientLoginStartRequest,
|
||||||
) -> Result<login::ServerLoginStartResponse> {
|
) -> Result<login::ServerLoginStartResponse> {
|
||||||
let user_id = request.username;
|
let user_id = request.username;
|
||||||
|
info!(r#"OPAQUE login attempt for "{}""#, &user_id);
|
||||||
let maybe_password_file = self
|
let maybe_password_file = self
|
||||||
.get_password_file_for_user(user_id.clone())
|
.get_password_file_for_user(user_id.clone())
|
||||||
.await?
|
.await?
|
||||||
@@ -147,9 +147,16 @@ impl OpaqueHandler for SqlOpaqueHandler {
|
|||||||
)?)?;
|
)?)?;
|
||||||
// Finish the login: this makes sure the client data is correct, and gives a session key we
|
// Finish the login: this makes sure the client data is correct, and gives a session key we
|
||||||
// don't need.
|
// don't need.
|
||||||
let _session_key =
|
match opaque::server::login::finish_login(server_login, request.credential_finalization) {
|
||||||
opaque::server::login::finish_login(server_login, request.credential_finalization)?
|
Ok(session) => {
|
||||||
.session_key;
|
info!(r#"OPAQUE login successful for "{}""#, &username);
|
||||||
|
let _ = session.session_key;
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
warn!(r#"OPAQUE login attempt failed for "{}""#, &username);
|
||||||
|
return Err(e.into());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
Ok(username)
|
Ok(username)
|
||||||
}
|
}
|
||||||
@@ -191,11 +198,12 @@ impl OpaqueHandler for SqlOpaqueHandler {
|
|||||||
opaque::server::registration::get_password_file(request.registration_upload);
|
opaque::server::registration::get_password_file(request.registration_upload);
|
||||||
// Set the user password to the new password.
|
// Set the user password to the new password.
|
||||||
let user_update = model::users::ActiveModel {
|
let user_update = model::users::ActiveModel {
|
||||||
user_id: ActiveValue::Set(username),
|
user_id: ActiveValue::Set(username.clone()),
|
||||||
password_hash: ActiveValue::Set(Some(password_file.serialize())),
|
password_hash: ActiveValue::Set(Some(password_file.serialize())),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
user_update.update(&self.sql_pool).await?;
|
user_update.update(&self.sql_pool).await?;
|
||||||
|
info!(r#"Successfully (re)set password for "{}""#, &username);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -345,7 +345,6 @@ async fn opaque_login_start<Backend>(
|
|||||||
where
|
where
|
||||||
Backend: OpaqueHandler + 'static,
|
Backend: OpaqueHandler + 'static,
|
||||||
{
|
{
|
||||||
info!(r#"OPAQUE login attempt for "{}""#, &request.username);
|
|
||||||
data.get_opaque_handler()
|
data.get_opaque_handler()
|
||||||
.login_start(request.into_inner())
|
.login_start(request.into_inner())
|
||||||
.await
|
.await
|
||||||
@@ -407,14 +406,8 @@ where
|
|||||||
.login_finish(request.into_inner())
|
.login_finish(request.into_inner())
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(name) => {
|
Ok(name) => get_login_successful_response(&data, &name).await,
|
||||||
info!(r#"OPAQUE login successful"#);
|
Err(e) => Err(e.into()),
|
||||||
get_login_successful_response(&data, &name).await
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
warn!(r#"OPAQUE login attempt failed"#);
|
|
||||||
Err(e.into())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user