@@ -118,11 +118,16 @@ def process_request(self, req: Union[Message, dict], **kwargs):
118118 return self .error_cls (error = "invalid_request" , error_description = "Missing code" )
119119
120120 _session_info = _mngr .get_session_info_by_token (_access_code , grant = True )
121- if _session_info ["client_id" ] != req ["client_id" ]:
122- logger .debug ("{} owner of token" .format (_session_info ["client_id" ]))
121+ client_id = _session_info ["client_id" ]
122+ if client_id != req ["client_id" ]:
123+ logger .debug ("{} owner of token" .format (client_id ))
123124 logger .warning ("Client using token it was not given" )
124125 return self .error_cls (error = "invalid_grant" , error_description = "Wrong client" )
125126
127+ if "grant_types_supported" in _context .cdb [client_id ]:
128+ grant_types_supported = _context .cdb [client_id ].get ("grant_types_supported" )
129+ else :
130+ grant_types_supported = _context .provider_info ["grant_types_supported" ]
126131 grant = _session_info ["grant" ]
127132
128133 _based_on = grant .get_token (_access_code )
@@ -162,7 +167,11 @@ def process_request(self, req: Union[Message, dict], **kwargs):
162167 if token .expires_at :
163168 _response ["expires_in" ] = token .expires_at - utc_time_sans_frac ()
164169
165- if issue_refresh and "refresh_token" in _supports_minting :
170+ if (
171+ issue_refresh
172+ and "refresh_token" in _supports_minting
173+ and "refresh_token" in grant_types_supported
174+ ):
166175 try :
167176 refresh_token = self ._mint_token (
168177 token_class = "refresh_token" ,
0 commit comments