]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/auth: check auth for http options requests
authorTobias Urdin <tobias.urdin@binero.se>
Thu, 27 Jul 2023 14:59:45 +0000 (14:59 +0000)
committerTobias Urdin <tobias.urdin@binero.se>
Thu, 17 Aug 2023 11:47:34 +0000 (11:47 +0000)
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>
src/rgw/rgw_rest_s3.cc

index 21f0a4754517f1f6ce0fd2ee16b49a14ea9eaa0f..123bcbab7335e4d43cb72e227f657d0b258aa87a 100644 (file)
@@ -6461,14 +6461,16 @@ rgw::auth::s3::STSEngine::authenticate(
 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;
 }