Skip to content

Commit

Permalink
Refresh tokens based on expiry time provided by the OIDC instance
Browse files Browse the repository at this point in the history
  • Loading branch information
Alfred Neumayer committed Dec 6, 2019
1 parent a85d2b1 commit 8a062a1
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
3 changes: 2 additions & 1 deletion src/flask_pyoidc/flask_pyoidc.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,8 @@ def wrapper(*args, **kwargs):
session = UserSession(flask.session, provider_name)
client = self.clients[session.current_provider]

if session.should_refresh(client.session_refresh_interval_seconds):
if session.last_authenticated is not None and \
session.should_refresh(client.session_refresh_interval_seconds):
logger.debug('user auth will be refreshed "silently"')
return self._authenticate(client, interactive=False)
elif session.is_authenticated():
Expand Down
8 changes: 6 additions & 2 deletions src/flask_pyoidc/user_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ def is_authenticated(self):
return self._session_storage.get('last_authenticated') is not None

def should_refresh(self, refresh_interval_seconds=None):
return refresh_interval_seconds is not None and \
self._refresh_time(refresh_interval_seconds) < time.time()
current_time = time.time()
token_exp = (self._session_storage.get('token_exp', 0) - 20)
return current_time > token_exp

def _refresh_time(self, refresh_interval_seconds):
last = self._session_storage.get('last_authenticated', 0)
Expand All @@ -56,10 +57,13 @@ def set_if_defined(session_key, value):
self._session_storage[session_key] = value

auth_time = int(time.time())
exp_time = int(time.time() + 300)
if id_token:
auth_time = id_token.get('auth_time', auth_time)
exp_time = id_token.get('exp', exp_time)

self._session_storage['last_authenticated'] = auth_time
self._session_storage['token_exp'] = exp_time
set_if_defined('access_token', access_token)
set_if_defined('id_token', id_token)
set_if_defined('id_token_jwt', id_token_jwt)
Expand Down

0 comments on commit 8a062a1

Please sign in to comment.