작성
·
41
·
수정됨
0
마지막 강의에서 이불러 인가서버 access token을 1초만에 만료 시키는 설정을 하고 리소스 서버로 expire 엔드 포인트를 호출 하였는데 여기서 bearer 인증 필터를 거치는데 여기서 jwt 토큰을 decoder로 검증할 때 토큰이 만료되어 검증이 실패하지 않나요? 강의에서는 바로 컨트롤러 엔드 포인트까지 도달 하고 클라이언트까지 응답이 갔습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. hoonseung님.
JWT 토큰 만료와 관련된 문제는 백엔드 개발에서 자주 발생하는 이슈입니다. JWT는 기본적으로 자체적으로 서명되어 있어 발급된 이후에는 클라이언트 측에서 그 유효기간을 직접적으로 변경하거나 확인하지 않습니다. 이를 토큰의 장점으로 활용할 수 있지만, 단점으로도 작용할 수 있는 부분이 있습니다.
토큰 검증 과정에서 JWTDecoder가 토큰을 검증할 때, 일반적으로 유효기간(exp, expiration time)을 확인하게 됩니다. 이 시점에서 토큰이 만료되었다면 예외가 발생하게 되며, 이는 개발자가 별도로 처리해야 하는 사항입니다. 강의에서 언급된 상황에서는, 아마도 예시 코드를 작성하시면서 만료 시간 확인 로직이 검증 과정에서 제대로 작동하지 않았거나, 만료 시간보다 이전에 요청이 처리되었을 가능성도 있습니다.
관련해서는 이전 질문 사례도 있습니다. JWT의 만료시간(expiration time)을 확인하는 부분에 대한 구현이 제대로 되어 있어야 만료 시점에 따라 적절한 처리가 됩니다. 또한, Java 라이브러리를 사용해서 JWT를 검증할 때, 만료 시간을 체크하기 위해 토큰의 getExpirationTime()
을 불러와 현재 시간과의 비교를 통해 확인할 수 있습니다.
다음은 만료 시간 검사를 직접 수행하는 예시 코드입니다:
Date expirationTime = signedJWT.getJWTClaimsSet().getExpirationTime();
boolean isTokenExpired = new Date().after(expirationTime);
위와 같이 직접적으로 토큰 만료 여부를 체크하는 로직을 JWTDecoder에 명시적으로 추가하여 만료된 토큰에 대해 적절한 응답을 설정해 줄 필요가 있습니다.
여기서 더 구체적으로 문제가 되는 부분이 있거나, 구현 사항에 대해 구체적인 코드 예시나 오류 내용을 공유해 주시면, 추가적인 점검이 가능합니다. 추가적인 질문은 언제든지 환영합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.