From 5f0b5e6627dc927bfd439e6eb1e479eb166b7def Mon Sep 17 00:00:00 2001 From: Tommy Chen Date: Thu, 19 Jan 2023 14:04:39 +0800 Subject: [PATCH] Support multiple SASL auth mechanisms --- src/server.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/server.rs b/src/server.rs index 1d9bcd14..ec9d5b7f 100644 --- a/src/server.rs +++ b/src/server.rs @@ -158,9 +158,12 @@ impl Server { Err(_) => return Err(Error::SocketError(format!("Error reading sasl message on server startup {{ username: {:?}, database: {:?} }}", user.username, database))), }; - let sasl_type = String::from_utf8_lossy(&sasl_auth[..sasl_len - 2]); + let sasl_types: Vec<_> = sasl_auth[..sasl_len - 2] + .split(|&b| b == 0) + .map(|v| String::from_utf8_lossy(v).to_string()) + .collect(); - if sasl_type == SCRAM_SHA_256 { + if sasl_types.contains(&SCRAM_SHA_256.to_string()) { debug!("Using {}", SCRAM_SHA_256); // Generate client message. @@ -185,7 +188,7 @@ impl Server { write_all(&mut stream, res).await?; } else { - error!("Unsupported SCRAM version: {}", sasl_type); + error!("Unsupported SCRAM version: {:?}", sasl_types); return Err(Error::ServerError); } }