]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/sts: Use client_id for assumerolewithwebidentityresponse 61796/head
authorPritha Srivastava <prsrivas@redhat.com>
Mon, 17 Feb 2025 08:11:15 +0000 (13:41 +0530)
committerPritha Srivastava <prsrivas@redhat.com>
Sat, 26 Apr 2025 06:02:04 +0000 (11:32 +0530)
if aud is not present in JWT.

Signed-off-by: Pritha Srivastava <prsrivas@redhat.com>
src/rgw/rgw_auth.cc

index f04ef6c38d9a27c175dfd27b33d7347dcb345662..fdf472dbf8938f1a8a56deb2bb072c6baaa56920 100644 (file)
@@ -701,7 +701,15 @@ auto rgw::auth::WebIdentityApplier::load_acct_info(const DoutPrefixProvider* dpp
 void rgw::auth::WebIdentityApplier::modify_request_state(const DoutPrefixProvider *dpp, req_state* s) const
 {
   s->info.args.append("sub", this->sub);
-  s->info.args.append("aud", this->aud);
+  //this is needed for AssumeRoleWithWebIdentityResponse
+  //but if aud is not present in the token, client id can be used
+  //from AWS docs - "The intended audience (also known as client ID) of the web identity token."
+  //https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html
+  if (this->aud.empty() && !this->client_id.empty()) {
+    s->info.args.append("aud", this->client_id);
+  } else {
+    s->info.args.append("aud", this->aud);
+  }
   s->info.args.append("provider_id", this->iss);
   s->info.args.append("client_id", this->client_id);