mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-30 08:49:26 +00:00
fix(iam):decrypt_data failed when password changed (#150)
This commit is contained in:
@@ -37,7 +37,7 @@ use serde::{Serialize, de::DeserializeOwned};
|
|||||||
use std::{collections::HashMap, sync::Arc};
|
use std::{collections::HashMap, sync::Arc};
|
||||||
use tokio::sync::broadcast::{self, Receiver as B_Receiver};
|
use tokio::sync::broadcast::{self, Receiver as B_Receiver};
|
||||||
use tokio::sync::mpsc::{self, Sender};
|
use tokio::sync::mpsc::{self, Sender};
|
||||||
use tracing::{info, warn};
|
use tracing::{debug, info, warn};
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
pub static ref IAM_CONFIG_PREFIX: String = format!("{}/iam", RUSTFS_CONFIG_PREFIX);
|
pub static ref IAM_CONFIG_PREFIX: String = format!("{}/iam", RUSTFS_CONFIG_PREFIX);
|
||||||
@@ -370,7 +370,15 @@ impl Store for ObjectStore {
|
|||||||
async fn load_iam_config<Item: DeserializeOwned>(&self, path: impl AsRef<str> + Send) -> Result<Item> {
|
async fn load_iam_config<Item: DeserializeOwned>(&self, path: impl AsRef<str> + Send) -> Result<Item> {
|
||||||
let mut data = read_config(self.object_api.clone(), path.as_ref()).await?;
|
let mut data = read_config(self.object_api.clone(), path.as_ref()).await?;
|
||||||
|
|
||||||
data = Self::decrypt_data(&data)?;
|
data = match Self::decrypt_data(&data) {
|
||||||
|
Ok(v) => v,
|
||||||
|
Err(err) => {
|
||||||
|
debug!("decrypt_data failed: {}", err);
|
||||||
|
// delete the config file when decrypt failed
|
||||||
|
let _ = self.delete_iam_config(path.as_ref()).await;
|
||||||
|
return Err(Error::ConfigNotFound);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
Ok(serde_json::from_slice(&data)?)
|
Ok(serde_json::from_slice(&data)?)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user