작성
·
88
0
JwtToken 기반 인증을 수행할 때, 서버 측에서는 요청의 Authentication 필드로부터 토큰을 추출하고 검증하는데, 만약 요청에 토큰 필드 자체가 존재하지 않는 경우 어떻게 동작하나요?
예를 들어, 사용자가 로그인을 진행하는 경우, 아직 토큰을 발급 받지 못한 상태인데, 이런 경우를 어떻게 처리해줘야 하는지 궁금합니다.
만약 필드가 비어있는 경우 다음 필터로 넘어가는 방식으로 구현하게 된다면, 의도적으로 토큰을 필드에 추가하지 않고 요청을 전송하는 공격에 취약할 것 같습니다.
이런 경우 각 동작(로그인 등)마다 토큰 인증을 수행할지, 수행하지 않을지 구분해줘야 하는 걸까요?
감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
전윤혁님의 질문에 답변드리겠습니다. JwtToken 기반 인증 시스템에서 요청에 토큰 필드가 없는 경우의 처리 방법은 주로 인증 로직을 구현할 때 결정됩니다. 일반적으로 다음과 같은 접근 방식을 취할 수 있습니다:
비인증 된 요청 처리: 시스템에는 인증이 필요하지 않은 요청(예: 사용자 로그인, 회원가입 등)과 인증이 필요한 요청(예: 사용자 프로필 정보 조회)이 있을 수 있습니다. 인증 토큰이 없는 요청을 받았을 때, 해당 요청이 인증이 필요 없는 요청인지를 먼저 판단합니다. 인증이 필요 없는 요청이라면 정상적으로 처리하고, 인증이 필요한 요청이라면 인증 오류를 반환합니다.
명확한 인증 오류 반환: 요청에서 토큰이 발견되지 않았을 경우, 명확한 인증 오류(예: 401 Unauthorized)를 반환하여 클라이언트에게 토큰이 없거나 유효하지 않음을 알립니다. 이렇게 함으로써 클라이언트는 적절한 조치(예: 로그인 재시도, 토큰 재발급 요청 등)를 취할 수 있습니다.
보안 정책 적용: 요청에 토큰이 없는 것을 공격으로 간주할 경우, 추가적인 보안 정책을 적용할 수 있습니다. 예를 들어, 반복적으로 토큰 없이 요청을 보내는 IP 주소를 차단하는 등의 조치를 취할 수 있습니다.
제공된 정보 내에서는 직접적으로 이 문제에 대한 해결 방안을 제시하고 있지 않습니다. 다만, 일반적인 접근 방식과 보안 관련 고려 사항을 바탕으로 안내드렸습니다. 보다 구체적인 구현 방법이나 보안 조치는 사용하시는 인증 시스템의 문서를 참조하거나, 관련 커뮤니티에서 논의를 찾아보시는 것을 추천드립니다.