diff --git a/.config/s3s-footprint-baseline.txt b/.config/s3s-footprint-baseline.txt
index 58a6b3c2a..a42740b21 100644
--- a/.config/s3s-footprint-baseline.txt
+++ b/.config/s3s-footprint-baseline.txt
@@ -12,6 +12,6 @@
# s3_error_lines lines holding s3_error!, same scope, minus those the script
# header's rule clears (rustfs_s3_types's macro); fails closed
# ecstore_files Rust files referencing s3s paths under crates/ecstore/src
-files=82
+files=66
s3_error_lines=289
ecstore_files=0
diff --git a/.config/test-count-baseline.txt b/.config/test-count-baseline.txt
index e5168e766..96c9fe51e 100644
--- a/.config/test-count-baseline.txt
+++ b/.config/test-count-baseline.txt
@@ -10,7 +10,7 @@
# intentionally removed. Regenerate with:
# scripts/check_test_count_ratchet.sh --update
e2e_test 956 20
-rustfs 5957 64
+rustfs 5955 64
rustfs-audit 70 0
rustfs-checksums 26 0
rustfs-common 36 0
diff --git a/rustfs/src/admin/auth.rs b/rustfs/src/admin/auth.rs
index 3fced06e2..a182407c5 100644
--- a/rustfs/src/admin/auth.rs
+++ b/rustfs/src/admin/auth.rs
@@ -14,15 +14,12 @@
use crate::app::{RequestCredentials, RequestEnvelope};
use crate::auth::get_condition_values;
-use crate::server::RemoteAddr;
use http::HeaderMap;
-use http::Uri;
use rustfs_credentials::Credentials;
use rustfs_iam::store::Store;
use rustfs_iam::sys::IamSys;
use rustfs_policy::policy::{Args, action::Action};
use rustfs_s3_types::{S3Result, s3_error};
-use s3s::{Body, S3Request};
use std::sync::Arc;
use tracing::debug;
@@ -238,37 +235,6 @@ pub async fn validate_admin_request_with_kms_key(
.await
}
-/// Unified authentication request handler for both UI and CLI
-///
-/// This function provides a single entry point for authentication,
-/// ensuring consistent behavior between UI and CLI authentication flows.
-///
-/// # Arguments
-/// * `headers` - HTTP request headers
-/// * `uri` - Request URI
-/// * `credentials` - User credentials from request (Credentials)
-///
-/// # Returns
-/// * `Ok((Credentials, bool))` - Authentication successful, returns user credentials and is_owner flag
-/// * `Err(S3Error)` - Authentication failed with error details
-///
-/// # Example
-/// ```ignore
-/// let (cred, is_owner) = authenticate_request(&req.headers, &req.uri, &input_cred).await?;
-/// ```
-pub async fn authenticate_request(
- headers: &HeaderMap,
- uri: &Uri,
- credentials: &s3s::auth::Credentials,
-) -> S3Result<(Credentials, bool)> {
- use crate::auth::get_session_token;
-
- // Extract session token from request
- let session_token = get_session_token(uri, headers).unwrap_or_default();
-
- authenticate_request_facts(&credentials.access_key, session_token).await
-}
-
/// Authenticate the caller of an owned admin request from the facts its
/// envelope carries: the presented access key and the session token the edge
/// decoded.
@@ -304,26 +270,12 @@ async fn authenticate_request_facts(access_key: &str, session_token: &str) -> S3
result.map_err(Into::into)
}
-/// Full admin gate over an `S3Request`: extract the request credentials,
-/// authenticate them ([`authenticate_request`]), then authorize the caller for
-/// `actions` ([`validate_admin_request`], allowing on the first permitted
-/// action). Returns the authenticated credentials for handlers that need the
-/// caller identity. `deny_only` stays `false`: every caller performs a full
-/// allow check.
-pub async fn authorize_admin_request(req: &S3Request
, actions: Vec) -> S3Result {
- let Some(input_cred) = req.credentials.as_ref() else {
- return Err(s3_error!(InvalidRequest, "get cred failed"));
- };
-
- let (cred, owner) = authenticate_request(&req.headers, &req.uri, input_cred).await?;
-
- let remote_addr = req.extensions.get::