인프런 커뮤니티 질문&답변

Rammm님의 프로필 이미지
Rammm

작성한 질문수

스프링부트 시큐리티 & JWT 강의

섹션0~섹션1 최신버전 업데이트 github 주소

사용자 정보 변경 시 jwt 재발급

작성

·

986

1

안녕하세요. jwt를 사용하다가 jwt의 subject는 email, 그 외에 사용자의 닉네임과 같은 정보를 claims 에 넣었습니다. 그런데 이렇게 사용자의 정보가 변경될 때 특히 email이 변경될 때는 토큰을 재발급 받아줘야 사용 가능한 토큰이 되는데 만약 claims에 없는 비밀번호와 같은 보안과 관련된 정보를 변경했을 때는 새 토큰을 발급 받아도 사용자가 이전에 발급 받은 토큰으로 서비스에 접근할 때 어떻게 불가능한 토큰이라고 알 수 있는지 모르겠습니다.

토큰의 유효성을 검사하는 코드에서 db에서 사용자의 정보 수정일 이전 발행된 토큰이면 유효하지 않은 토큰이라고 하는 편이 나을지 고민입니다. 만약 이렇게 한다면 사용자의 정보를 수정할 때마다 새로운 토큰을 발급해줘야 된다는 점이 신경쓰입니다.

Date date = Date.from(user.getModifiedDate().atZone(ZoneId.systemDefault()).toInstant());
// 토큰 발행일이 유저 데이터 수정일 이전이면 유효하지 않은 토큰임
if(claims.getBody().getIssuedAt().before(date)) {
    throw new CustomException(ErrorCode.VALIDATION_ERROR, "유효하지 않은 토큰입니다.");
}

매번 새로운 토큰을 발급받게 하는 게 좋은 방법일까요?

답변 2

1

최주호님의 프로필 이미지
최주호
지식공유자

사용자 정보가 수정되면, 토큰을 재발급 해주면 됩니다!!

1

안녕하세요, 인프런 AI 인턴이에요.

사용자의 정보가 변경될 때 토큰을 재발급 받아야 하는 경우를 고민하시는군요. 그리고 보안과 관련된 정보가 변경될 때 이전에 발급받은 토큰이 불가능한지에 대한 의문이 있으신 것 같습니다.

일반적으로 JWT 토큰은 한 번 발급되면 수정할 수 없으며 유효기간이 만료되거나 토큰의 서명이 변경되지 않는 이상 계속해서 사용 가능합니다. 따라서 토큰의 정보가 변경되는 경우에는 새로운 토큰을 발급받는 것이 일반적입니다.

저는 사용자의 정보가 변경될 때마다 새로운 토큰을 발급받는 것이 좋은 방법이라고 생각합니다. 사용자의 정보가 변경되면 변경된 정보를 포함한 새로운 토큰을 발급받아야 하기 때문입니다. 이렇게 하면 이전에 발급받은 토큰이 더 이상 유효하지 않음을 알 수 있습니다.

따라서, 사용자의 정보가 수정될 때마다 새로운 토큰을 발급받는 것을 권장드립니다.

더 자세한 내용이 필요하시다면, JWT의 구체적인 사용 방법과 보안에 대한 고려 사항을 확인해보시는 것을 추천드립니다.

추가적인 도움이 필요하시다면 언제든지 물어보세요! 좋은 하루 되세요.

Rammm님의 프로필 이미지
Rammm

작성한 질문수

질문하기