어플리케이션 최초 유입 시, 기존 발행 토큰 정보가 없을 경우 클라이언트는 최초 발생 요청을 수행한다.최초 발생 시에는 발급된 시스템 키를 확인하여 수행하며, 시스템 키가 일치하는 경우, 해당 시스템의 만료, 키 정책을 반영하여 토큰을 발생한다.
토큰이 발행된 이후에는 클라이언트는 별도의 저장소에 토큰을 저장하고, API 호출 시마다 토큰을 포함하여 함께 요청한다.서버에서는 API 호출 시 토큰 정보를 확인하여 유효성 확인을 하게 되며, 토큰이 만료된 경우 refresh 토큰 정보를 확인하여 유효한 경우 자동 재발행을 수행하고 응답에 포함한다.클라이언트는 응답 데이터에 토큰 정보가 포함되어 있으면 토큰 저장소의 정보를 업데이트 한다.
토큰은 발행 당시 만료기간을 가지고 있으며, 토큰의 유형에 따라 refresh 토큰 정보를 저장소에 추가하고 토큰 정보를 반환한다.유입된 토큰이 만료되었을 때는 함께 요청된 refresh 토큰 정보가 저장소에 있는지 확인하고, 일치한다면 재발행을 수행하고 refresh 토큰 정보를 삭제한다.
SSO 등 토큰 재발행을 사용하지 않는 시스템 또는 API는 refresh 토큰 정보가 유입되더라도 무시하도록 처리한다.
토큰 발행 키는 유출될 경우, 악용될 소지가 있으므로 주기적으로 변경하여야 한다.토큰 발행 시 토큰 키의 버전을 기입하고, 토큰 키의 버전이 유효한 기간을 별도로 설정하여 토큰 키 유출에 따라 보안 사고를 예방할 수 있다.
시스템 별로 랜덤 키 버전을 생성하고, 1개월 단위로 키 버전을 변경하는 정책을 적용한다.각 토큰 키의 적용 기간은 30일이며, 사용 기간은 최장 60일로 설정한다.
JWT 처리는 기본 Security와 동일하나 토큰의 조회와 적재의 과정은 아래와 같이 세분화 되어 있다.
토큰 적재 프로세스
토큰 조회 프로세스