rgw::auth::ExternalAuthStrategy defines an LDAPEngine in a
ctor-initializer list, making it too late to conditionally initialize
-it- in ExternalAuthStrategy's ctor.
Fixes: https://tracker.ceph.com/issues/24228
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit
97e6c9dac7ca9050d7b16ac160120acbe6ddc33c)
Conflicts:
src/rgw/rgw_rest_s3.h : Added valid
}
- if (cct->_conf->rgw_s3_auth_use_ldap &&
- ! cct->_conf->rgw_ldap_uri.empty()) {
+ if (ldap_engine.valid()) {
add_engine(Control::SUFFICIENT, ldap_engine);
}
}
void rgw::auth::s3::LDAPEngine::init(CephContext* const cct)
{
+ if (! cct->_conf->rgw_s3_auth_use_ldap ||
+ ! cct->_conf->rgw_ldap_uri.empty()) {
+ return;
+ }
+
if (! ldh) {
std::lock_guard<std::mutex> lck(mtx);
if (! ldh) {
}
}
+bool rgw::auth::s3::LDAPEngine::valid() {
+ std::lock_guard<std::mutex> lck(mtx);
+ return (!!ldh);
+}
+
rgw::auth::RemoteApplier::acl_strategy_t
rgw::auth::s3::LDAPEngine::get_acl_strategy() const
{
const char* get_name() const noexcept override {
return "rgw::auth::s3::LDAPEngine";
}
+
+ static bool valid();
};