diff --git a/proxy/src/auth/backend/classic.rs b/proxy/src/auth/backend/classic.rs index 46bd215f3b..15d6f88203 100644 --- a/proxy/src/auth/backend/classic.rs +++ b/proxy/src/auth/backend/classic.rs @@ -36,7 +36,18 @@ pub(super) async fn authenticate( AuthInfo::Scram(secret) => { info!("auth endpoint chooses SCRAM"); let scram = auth::Scram(&secret); - let client_key = match flow.begin(scram).await?.authenticate().await? { + + let auth_flow = flow.begin(scram).await.map_err(|error| { + warn!(?error, "error sending scram acknowledgement"); + error + })?; + + let auth_outcome = auth_flow.authenticate().await.map_err(|error| { + warn!(?error, "error processing scram messages"); + error + })?; + + let client_key = match auth_outcome { sasl::Outcome::Success(key) => key, sasl::Outcome::Failure(reason) => { info!("auth backend failed with an error: {reason}"); diff --git a/proxy/src/sasl/stream.rs b/proxy/src/sasl/stream.rs index b24cc4bf44..9115b0f61a 100644 --- a/proxy/src/sasl/stream.rs +++ b/proxy/src/sasl/stream.rs @@ -4,6 +4,7 @@ use super::{messages::ServerMessage, Mechanism}; use crate::stream::PqStream; use std::io; use tokio::io::{AsyncRead, AsyncWrite}; +use tracing::info; /// Abstracts away all peculiarities of the libpq's protocol. pub struct SaslStream<'a, S> { @@ -68,7 +69,10 @@ impl SaslStream<'_, S> { ) -> super::Result> { loop { let input = self.recv().await?; - let step = mechanism.exchange(input)?; + let step = mechanism.exchange(input).map_err(|error| { + info!(?error, "error during SASL exchange"); + error + })?; use super::Step; return Ok(match step {