Skip to content
This repository was archived by the owner on Jun 12, 2021. It is now read-only.

Commit 8e82e73

Browse files
authored
Merge pull request #45 from nsklikas/fix-refresh-jwt-token
Use _make_at to refresh access token
2 parents 96d613e + 0de1023 commit 8e82e73

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

src/oidcendpoint/session.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -288,22 +288,16 @@ def get_sid_by_sub_and_client_id(self, sub, client_id):
288288
return sid
289289
return None
290290

291-
def replace_token(self, sid, sinfo, token_type):
291+
def replace_refresh_token(self, sid, sinfo):
292292
"""
293293
Replace an old refresh_token with a new one
294294
295295
:param sid: session ID
296296
:param sinfo: session info
297-
:param token_type: What type of tokens should be replaced
298297
:return: Updated session info
299298
"""
300-
301-
if token_type in self.handler:
302-
refresh_token = self.handler[token_type](sid, sinfo=sinfo)
303-
# blacklist the old
304-
self.revoke_token(sid, token_type, sinfo)
305-
306-
sinfo[token_type] = refresh_token
299+
refresh_token = self.handler["refresh_token"](sid, sinfo=sinfo)
300+
sinfo["refresh_token"] = refresh_token
307301
return sinfo
308302

309303
def _make_at(self, sid, session_info, aud=None, client_id_aud=True):
@@ -368,8 +362,8 @@ def upgrade_to_token(
368362
session_info["expires_at"] = self.handler[
369363
"access_token"].lifetime + utc_time_sans_frac()
370364

371-
if issue_refresh:
372-
session_info = self.replace_token(key, session_info, "refresh_token")
365+
if issue_refresh and "refresh_token" in self.handler:
366+
session_info = self.replace_refresh_token(key, session_info)
373367

374368
self[key] = session_info
375369
return session_info
@@ -391,15 +385,16 @@ def refresh_token(self, token, new_refresh=False):
391385

392386
_sid = _tinfo["sid"]
393387
session_info = self[_sid]
388+
if token != session_info.get("refresh_token"):
389+
raise UnknownToken()
394390
if is_expired(int(_tinfo["exp"])):
395391
raise ExpiredToken()
396392

397-
session_info = self.replace_token(_sid, session_info, "access_token")
398-
393+
session_info["access_token"] = self._make_at(_sid, session_info)
399394
session_info["token_type"] = self.handler["access_token"].token_type
400395

401396
if new_refresh:
402-
session_info = self.replace_token(_sid, session_info, "refresh_token")
397+
session_info = self.replace_refresh_token(_sid, session_info)
403398

404399
self[_sid] = session_info
405400
return session_info

0 commit comments

Comments
 (0)