]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: always check if token is expired 4884/head
authorAnton Aksola <anton.aksola@nebula.fi>
Fri, 10 Apr 2015 10:25:21 +0000 (13:25 +0300)
committerAbhishek Lekshmanan <abhishek.lekshmanan@ril.com>
Sun, 7 Jun 2015 06:54:00 +0000 (12:24 +0530)
Fixes: #11367
Currently token expiration is only checked by the token cache. With PKI
tokens no expiration check is done after decoding the token. This causes
PKI tokens to be valid indefinitely. UUID tokens are validated by
keystone after cache miss so they are not affected by this bug.

This commit adds explicit token expiration check to
RGWSwift::validate_keystone_token()

Signed-off-by: Anton Aksola <anton.aksola@nebula.fi>
Reported-by: Riku Lehto <riku.lehto@nexetic.com>
(cherry picked from commit 2df069390ea3bbcfbab5022750e89f51d197cc11)

src/rgw/rgw_swift.cc

index 586821e8db30ba949e7a1721383b52761e5dc989..2baf6c8c6d8a0b0f84f599b2924be1e1ef4320cf 100644 (file)
@@ -523,6 +523,11 @@ int RGWSwift::validate_keystone_token(RGWRados *store, const string& token, stru
   if (ret < 0)
     return ret;
 
+  if (t.expired()) {
+    ldout(cct, 0) << "got expired token: " << t.token.tenant.name << ":" << t.user.name << " expired: " << t.token.expires << dendl;
+    return -EPERM;
+  }
+
   keystone_token_cache->add(token_id, t);
 
   ret = update_user_info(store, info, rgw_user);