If we get a HTTP OPTIONS request we previously always
allowed the anonymous engine to handle the request even
if other auth was given in the request.
Fixes: https://tracker.ceph.com/issues/62033
Signed-off-by: Tobias Urdin <tobias.urdin@binero.com>
(cherry picked from commit
135b6fc20e8ad094ed94e05bfb1975578abbbdab)
bool rgw::auth::s3::S3AnonymousEngine::is_applicable(
const req_state* s
) const noexcept {
- if (s->op == OP_OPTIONS) {
- return true;
- }
-
AwsVersion version;
AwsRoute route;
std::tie(version, route) = discover_aws_flavour(s->info);
+ /* If HTTP OPTIONS and no authentication provided using the
+ * anonymous engine is applicable */
+ if (s->op == OP_OPTIONS && version == AwsVersion::UNKNOWN) {
+ return true;
+ }
+
return route == AwsRoute::QUERY_STRING && version == AwsVersion::UNKNOWN;
}