summaryrefslogtreecommitdiff
path: root/keystoneclient/middleware/auth_token.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-10-09 17:23:18 +0000
committerGerrit Code Review <review@openstack.org>2013-10-09 17:23:18 +0000
commit4ae816bbfff7eb3d3bbe63f4e47e40dcb0b9c031 (patch)
treef776bf3f749831bf49e646f2a232034ce8a00afa /keystoneclient/middleware/auth_token.py
parent102b8677fd787998cc28809d56a7319832abb557 (diff)
parent93793cb3963d5d001cb51e3452d2226230a72986 (diff)
downloadpython-keystoneclient-0.4.0.tar.gz
Merge "Normalize datetimes to account for tz"0.4.0
Diffstat (limited to 'keystoneclient/middleware/auth_token.py')
-rw-r--r--keystoneclient/middleware/auth_token.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/keystoneclient/middleware/auth_token.py b/keystoneclient/middleware/auth_token.py
index 52605f4..ea62db3 100644
--- a/keystoneclient/middleware/auth_token.py
+++ b/keystoneclient/middleware/auth_token.py
@@ -326,10 +326,12 @@ def confirm_token_not_expired(data):
timestamp = data['token']['expires_at']
else:
raise InvalidUserToken('Token authorization failed')
- expires = timeutils.parse_isotime(timestamp).strftime('%s')
- if time.time() >= float(expires):
+ expires = timeutils.parse_isotime(timestamp)
+ expires = timeutils.normalize_time(expires)
+ utcnow = timeutils.utcnow()
+ if utcnow >= expires:
raise InvalidUserToken('Token authorization failed')
- return expires
+ return timeutils.isotime(at=expires, subsecond=True)
def safe_quote(s):
@@ -999,7 +1001,18 @@ class AuthProtocol(object):
raise InvalidUserToken('Token authorization failed')
data, expires = cached
- if ignore_expires or time.time() < float(expires):
+
+ try:
+ expires = timeutils.parse_isotime(expires)
+ except ValueError:
+ # Gracefully handle upgrade of expiration times from *nix
+ # timestamps to ISO 8601 formatted dates by ignoring old cached
+ # values.
+ return
+
+ expires = timeutils.normalize_time(expires)
+ utcnow = timeutils.utcnow()
+ if ignore_expires or utcnow < expires:
self.LOG.debug('Returning cached token %s', token_id)
return data
else: