Skip to content

Commit 1c29dfc

Browse files
authored
Merge pull request #47 from ctriant/fix-introspection-expired
Properly handle expired tokens on introspection endpoint
2 parents a1779c4 + 6e4a701 commit 1c29dfc

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/idpyoidc/server/oauth2/introspection.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from idpyoidc.server.endpoint import Endpoint
77
from idpyoidc.server.token.exception import UnknownToken
88
from idpyoidc.server.token.exception import WrongTokenClass
9+
from idpyoidc.server.exception import ToOld
910

1011
LOGGER = logging.getLogger(__name__)
1112

@@ -103,7 +104,7 @@ def process_request(self, request=None, release: Optional[list] = None, **kwargs
103104
_session_info = _context.session_manager.get_session_info_by_token(
104105
request_token, grant=True
105106
)
106-
except (UnknownToken, WrongTokenClass):
107+
except (UnknownToken, WrongTokenClass, ToOld):
107108
return {"response_args": _resp}
108109

109110
grant = _session_info["grant"]

tests/test_server_31_oauth2_introspection.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,9 +457,14 @@ def test_jwt_unknown_key(self):
457457
_resp = self.introspection_endpoint.process_request(_req)
458458
assert _resp["response_args"]["active"] is False
459459

460-
def test_expired_access_token(self):
460+
def test_expired_access_token(self, monkeypatch):
461461
access_token = self._get_access_token(AUTH_REQ)
462-
access_token.expires_at = utc_time_sans_frac() - 1000
462+
lifetime = self.session_manager.token_handler.handler["access_token"].lifetime
463+
464+
def mock():
465+
return utc_time_sans_frac() + lifetime + 1
466+
467+
monkeypatch.setattr("idpyoidc.server.token.utc_time_sans_frac", mock)
463468

464469
_context = self.introspection_endpoint.server_get("endpoint_context")
465470

0 commit comments

Comments
 (0)