diff --git a/zf_integration/api.py b/zf_integration/api.py index 8a6bef4c5ae4a..787b3e5a52436 100644 --- a/zf_integration/api.py +++ b/zf_integration/api.py @@ -16,8 +16,8 @@ # under the License. import logging +from jwt import ExpiredSignatureError from typing import Any, Dict - from flask import request, Response, jsonify, make_response from flask_appbuilder import expose from marshmallow import ValidationError @@ -95,6 +95,8 @@ def get_info(self) -> Response: 'custom_dashboards': custom_dashboards['dashboards'], } return make_response(jsonify(respond), 200) + except ExpiredSignatureError: + return self.response_401() except ValidationError as error: return self.response_400(message=error.messages) diff --git a/zf_utils/jwt.py b/zf_utils/jwt.py index a6603efdb7983..3053d8b36fc73 100644 --- a/zf_utils/jwt.py +++ b/zf_utils/jwt.py @@ -1,5 +1,7 @@ import logging import jwt +from jwt import ExpiredSignatureError + from flask import current_app, Request from typing import Any, Dict @@ -17,6 +19,8 @@ def parse_jwt_from_request(cls, req: Request) -> Dict[str, Any]: raise Exception("Token not present") try: return jwt.decode(token, _jwt_secret, algorithms=["RS512"]) + except ExpiredSignatureError as ex: + raise ex except Exception as ex: logger.warning("Parse jwt failed", exc_info=True) raise Exception("Failed to parse token") from ex \ No newline at end of file