]> git-server-git.apps.pok.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)
committerMykola Golub <mgolub@suse.com>
Tue, 12 Sep 2023 09:24:05 +0000 (12:24 +0300)
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)

src/rgw/rgw_rest_s3.cc

index fdf9f28a21dd533ec70387911bb9be27eae3a113..3069e9b5c38bd6f36fc41ed41879d40ca311b68e 100644 (file)
@@ -5971,14 +5971,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;
 }