From d298272cbf0ed7d81e7ef2424e4004886bc17385 Mon Sep 17 00:00:00 2001 From: Pritha Srivastava Date: Thu, 20 Jul 2023 11:35:09 +0530 Subject: [PATCH] rgw/auth: Fix the return code returned by AuthStrategy, in case of LocalEngine authentication, when the previous auth engine is Not Applicable. The error code now returned is the one returned by LocalEngine. fixes: https://tracker.ceph.com/issues/61916 Signed-off-by: Pritha Srivastava (cherry picked from commit 6f7ef8620e52be776ef633bb962a4309996529df) --- src/rgw/rgw_auth.cc | 2 +- src/rgw/rgw_rest_s3.cc | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_auth.cc b/src/rgw/rgw_auth.cc index 2c61b8361a2..7be6518514e 100644 --- a/src/rgw/rgw_auth.cc +++ b/src/rgw/rgw_auth.cc @@ -172,7 +172,7 @@ strategy_handle_rejected(rgw::auth::Engine::result_t&& engine_result, case Control::FALLBACK: /* Don't try next. */ - return std::make_pair(false, std::move(strategy_result)); + return std::make_pair(false, std::move(engine_result)); default: /* Huh, memory corruption? */ diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 0b997f30b10..8c9f535afc2 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -6239,7 +6239,7 @@ rgw::auth::s3::LocalEngine::authenticate( if (driver->get_user_by_access_key(dpp, access_key_id, y, &user) < 0) { ldpp_dout(dpp, 5) << "error reading user info, uid=" << access_key_id << " can't authenticate" << dendl; - return result_t::deny(-ERR_INVALID_ACCESS_KEY); + return result_t::reject(-ERR_INVALID_ACCESS_KEY); } //TODO: Uncomment, when we have a migration plan in place. /*else { @@ -6253,7 +6253,7 @@ rgw::auth::s3::LocalEngine::authenticate( const auto iter = user->get_info().access_keys.find(access_key_id); if (iter == std::end(user->get_info().access_keys)) { ldpp_dout(dpp, 0) << "ERROR: access key not encoded in user info" << dendl; - return result_t::deny(-EPERM); + return result_t::reject(-EPERM); } const RGWAccessKey& k = iter->second; @@ -6269,7 +6269,7 @@ rgw::auth::s3::LocalEngine::authenticate( ldpp_dout(dpp, 15) << "compare=" << compare << dendl; if (compare != 0) { - return result_t::deny(-ERR_SIGNATURE_NO_MATCH); + return result_t::reject(-ERR_SIGNATURE_NO_MATCH); } auto apl = apl_factory->create_apl_local(cct, s, user->get_info(), -- 2.39.5