22from typing import Optional
33from typing import Union
44
5+ from cryptojwt import BadSyntax
56from cryptojwt .jwe .exception import JWEException
67from cryptojwt .jws .exception import NoSuitableSigningKeys
78from cryptojwt .jwt import utc_time_sans_frac
@@ -29,7 +30,8 @@ def _get_session_info(self, request, session_manager):
2930 except KeyError : # Missing code parameter - absolutely fatal
3031 return self .error_cls (error = "invalid_request" , error_description = "Missing code" )
3132
32- _session_info = session_manager .get_session_info_by_token (_access_code , grant = True )
33+ _session_info = session_manager .get_session_info_by_token (_access_code , grant = True ,
34+ handler_key = 'authorization_code' )
3335 logger .debug (f"Session info: { _session_info } " )
3436 return _session_info , _access_code
3537
@@ -117,9 +119,9 @@ def process_request(self, req: Union[Message, dict], **kwargs):
117119 _response ["expires_in" ] = token .expires_at - utc_time_sans_frac ()
118120
119121 if (
120- issue_refresh
121- and "refresh_token" in _supports_minting
122- and "refresh_token" in grant_types_supported
122+ issue_refresh
123+ and "refresh_token" in _supports_minting
124+ and "refresh_token" in grant_types_supported
123125 ):
124126 try :
125127 refresh_token = self ._mint_token (
@@ -162,7 +164,7 @@ def process_request(self, req: Union[Message, dict], **kwargs):
162164 return _response
163165
164166 def post_parse_request (
165- self , request : Union [Message , dict ], client_id : Optional [str ] = "" , ** kwargs
167+ self , request : Union [Message , dict ], client_id : Optional [str ] = "" , ** kwargs
166168 ) -> Union [Message , dict ]:
167169 """
168170 This is where clients come to get their access tokens
@@ -174,7 +176,8 @@ def post_parse_request(
174176
175177 _mngr = self .endpoint .server_get ("endpoint_context" ).session_manager
176178 try :
177- _session_info = _mngr .get_session_info_by_token (request ["code" ], grant = True )
179+ _session_info = _mngr .get_session_info_by_token (request ["code" ], grant = True ,
180+ handler_key = 'authorization_code' )
178181 except (KeyError , UnknownToken ):
179182 logger .error ("Access Code invalid" )
180183 return self .error_cls (error = "invalid_grant" , error_description = "Unknown code" )
@@ -211,7 +214,9 @@ def process_request(self, req: Union[Message, dict], **kwargs):
211214 return self .error_cls (error = "invalid_request" , error_description = "Wrong grant_type" )
212215
213216 token_value = req ["refresh_token" ]
214- _session_info = _mngr .get_session_info_by_token (token_value , grant = True )
217+
218+ _session_info = _mngr .get_session_info_by_token (token_value , handler_key = "refresh_token" ,
219+ grant = True )
215220 if _session_info ["client_id" ] != req ["client_id" ]:
216221 logger .debug ("{} owner of token" .format (_session_info ["client_id" ]))
217222 logger .warning ("{} using token it was not given" .format (req ["client_id" ]))
@@ -293,21 +298,21 @@ def process_request(self, req: Union[Message, dict], **kwargs):
293298 token .register_usage ()
294299
295300 if (
296- "client_id" in req
297- and req ["client_id" ] in _context .cdb
298- and "revoke_refresh_on_issue" in _context .cdb [req ["client_id" ]]
301+ "client_id" in req
302+ and req ["client_id" ] in _context .cdb
303+ and "revoke_refresh_on_issue" in _context .cdb [req ["client_id" ]]
299304 ):
300305 revoke_refresh = _context .cdb [req ["client_id" ]].get ("revoke_refresh_on_issue" )
301306 else :
302- revoke_refresh = revoke_refresh = self .endpoint .revoke_refresh_on_issue
307+ revoke_refresh = self .endpoint .revoke_refresh_on_issue
303308
304309 if revoke_refresh :
305310 token .revoke ()
306311
307312 return _resp
308313
309314 def post_parse_request (
310- self , request : Union [Message , dict ], client_id : Optional [str ] = "" , ** kwargs
315+ self , request : Union [Message , dict ], client_id : Optional [str ] = "" , ** kwargs
311316 ):
312317 """
313318 This is where clients come to refresh their access tokens
@@ -328,8 +333,10 @@ def post_parse_request(
328333
329334 _mngr = _context .session_manager
330335 try :
331- _session_info = _mngr .get_session_info_by_token (request ["refresh_token" ], grant = True )
332- except (KeyError , UnknownToken ):
336+ _session_info = _mngr .get_session_info_by_token (request ["refresh_token" ],
337+ handler_key = "refresh_token" ,
338+ grant = True )
339+ except (KeyError , UnknownToken , BadSyntax ):
333340 logger .error ("Refresh token invalid" )
334341 return self .error_cls (error = "invalid_grant" , error_description = "Invalid refresh token" )
335342
0 commit comments