|
7 | 7 | from cryptojwt.jws.exception import NoSuitableSigningKeys |
8 | 8 | from cryptojwt.jwt import utc_time_sans_frac |
9 | 9 |
|
| 10 | +from ...exception import InvalidBranchID |
| 11 | +from idpyoidc.exception import MissingRequiredAttribute |
10 | 12 | from idpyoidc.message import Message |
11 | 13 | from idpyoidc.message.oidc import RefreshAccessTokenRequest |
12 | 14 | from idpyoidc.server.oauth2.token_helper import TokenEndpointHelper |
@@ -140,16 +142,19 @@ def post_parse_request( |
140 | 142 | request = RefreshAccessTokenRequest(**request.to_dict()) |
141 | 143 | _context = self.endpoint.upstream_get("context") |
142 | 144 |
|
143 | | - request.verify( |
144 | | - keyjar=self.endpoint.upstream_get("attribute", "keyjar"), opponent_id=client_id |
145 | | - ) |
| 145 | + try: |
| 146 | + request.verify( |
| 147 | + keyjar=self.endpoint.upstream_get("attribute", "keyjar"), opponent_id=client_id |
| 148 | + ) |
| 149 | + except MissingRequiredAttribute as e: |
| 150 | + return self.error_cls(error="invalid_grant", error_description=str(e)) |
146 | 151 |
|
147 | 152 | _mngr = _context.session_manager |
148 | 153 | try: |
149 | 154 | _session_info = _mngr.get_session_info_by_token( |
150 | 155 | request["refresh_token"], handler_key="refresh_token", grant=True |
151 | 156 | ) |
152 | | - except (KeyError, UnknownToken, BadSyntax): |
| 157 | + except (KeyError, UnknownToken, BadSyntax, InvalidBranchID): |
153 | 158 | logger.error("Refresh token invalid") |
154 | 159 | return self.error_cls(error="invalid_grant", error_description="Invalid refresh token") |
155 | 160 |
|
|
0 commit comments