diff --git a/ecs/jskult-webapp/src/depends/auth.py b/ecs/jskult-webapp/src/depends/auth.py index 820cdc9a..308704a9 100644 --- a/ecs/jskult-webapp/src/depends/auth.py +++ b/ecs/jskult-webapp/src/depends/auth.py @@ -32,8 +32,10 @@ def check_session_expired(session: Union[UserSession, None] = Depends(get_curren return None last_access_time = session.last_access_time - session_expired_period = datetime.datetime.fromtimestamp( - last_access_time) + datetime.timedelta(minutes=environment.SESSION_EXPIRE_MINUTE) + last_access_datetime = datetime.datetime.fromtimestamp(last_access_time) + session_expired_period = last_access_datetime + datetime.timedelta(minutes=environment.SESSION_EXPIRE_MINUTE) + logger.debug(f'last_access_time: {last_access_datetime}') + logger.debug(f'session_expired_period: {session_expired_period}') if session_expired_period < datetime.datetime.now(): return None @@ -49,4 +51,5 @@ def verify_session(session: Union[UserSession, None] = Depends(check_session_exp except JWTTokenVerifyException as e: logger.info(e) return None + # FIXME: ここで検証後のセッションになっていないのでは? return session diff --git a/ecs/jskult-webapp/src/model/internal/jwt_token.py b/ecs/jskult-webapp/src/model/internal/jwt_token.py index d7544125..f4767cd0 100644 --- a/ecs/jskult-webapp/src/model/internal/jwt_token.py +++ b/ecs/jskult-webapp/src/model/internal/jwt_token.py @@ -1,4 +1,5 @@ import base64 +import datetime import json from typing import Optional @@ -7,8 +8,11 @@ import requests from starlette import status from src.error.exceptions import JWTTokenVerifyException +from src.logging.get_logger import get_logger from src.system_var import environment +logger = get_logger('JWTトークン検証') + class JWTToken: id_token: str @@ -134,8 +138,13 @@ class JWTToken: # Cognitoのサーバー時間とのズレにより、Issued atクレームの検証に失敗するパターンに対処する options={'verify_iat': False} ) + # トークン有効期限をログに出力 + exp = verified_jwt.get('exp', '') + expire_datetime = datetime.datetime.fromtimestamp(verified_jwt['iat']) if exp else None + logger.info(f"トークン有効期限:{expire_datetime}") # 有効期限(exp)が切れた場合、トークンをリフレッシュする except jwt.ExpiredSignatureError: + logger.info('IDトークンの有効期限が切れたため、トークンをリフレッシュ') refreshed_jwt_token = JWTToken.refresh(self.refresh_token) return refreshed_jwt_token.verified_token() # 有効期限以外の検証に失敗した場合は例外とする