inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹소켓/STOMP 채팅서비스(spring, vue, redis)

JWT토큰검증

jwt 인증, 검증 질문입니다.

161

sw

작성한 질문수 3

0

안녕하세요. jwt 11 버전 설명해주시면서 생성과 검증에 대한 궁금증이 생기는데요.

생성을 위해서는 base64로 인코딩 된 값을 디코더 하신 뒤 SecretKeySpec을 이용한 뒤 HS512로 암호화 하셨는데요.

검증 부분에서는 base64로 인코딩 된 값(디코더와 SecretKeySpec가 이루어지지 않은 채로)으로 토큰 검증 및 claims를 추출하는데 이 부분에서 문제가 없는 걸까요?

 

spring-boot websocket stomp-websocket pubsub vue-3

답변 2

0

bradkim

안녕하세요!! jwt토큰 관련 라이브러리에는 많은 부분이 내부적으로 자동구현이 이뤄져있습니다.
base64로 인코딩된 부분은 언제든 디코딩이 가능하고, 라이브러리 내부적으로 디코딩을 수행한 후에 jwt토큰 내용값을 이용하여 검증을 수행합니다.

 

또한, HS512로 암호화한것은 최초에 signature부분을 만들려면 반드시 해줘야 하는 작업입니다. 이는 인코딩이 아니라 암호화입니다.

 

인코딩과 다르게 암호화한것은 디코딩이 불가능하죠. 나중에 검증 부분에서는 이를 사용자가 넣어오는 signature부분과 비교대조하여 검증합니다. 이 또한 상당부분 자동화가 돼 있어서, 가시적으로 보기는 어렵다고 보시면 되겠습니다.

 

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. sw님.

JWT(JASON Web Token)의 생성과 검증 과정에서 사용되는 기법에 대해 질문해 주셨네요.

  1. JWT 생성 시:

    • JWT는 일반적으로 헤더, 페이로드, 사인을 포함하여 세 부분으로 구성되며, 각각은 Base64Url로 인코딩 됩니다.
    • 생성 시 SecretKeySpec을 통해 해싱 알고리즘(예: HS512)을 이용해 서명(digital signature)이 생성됩니다.
  2. JWT 검증 시:

    • 클라이언트로부터 받은 토큰은 먼저 Base64Url로 디코딩되어 각 부분(헤더, 페이로드, 서명)을 분리합니다.
    • 서명 검증을 위해 서버가 가지고 있는 SecretKeySpec을 사용하여 서명을 재계산하고, 받은 토큰의 서명과 비교합니다.
    • 여기서 중요한 점은 SecretKeySpec과 디코딩 과정이 검증에서 직접적으로 다루어지지 않더라도, 서명에 이상이 없다면 성공적인 검증이 이루어졌다고 판단할 수 있습니다.

스프링 환경에서 JWT를 사용할 때 가장 중요한 것은 올바르게 셋업된 키 및 알고리즘을 사용하는 것이며, 검증 로직에서도 정확한 서명 비교가 이루어져야 합니다.

이와 관련하여 문제를 해결하거나 추가적인 이해를 돕기 위한 기존의 답변 및 관련 링크는 아래에서 확인할 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ERD 질문

0

61

2

StompHandler 관한 질문

0

84

2

리프레시 토큰은 알아서 구현하면 되는건가요??

0

81

2

cors, csrf 직접 구현

0

66

1

JWT 필터구현

0

105

2

강의 잘듣고 있습니다. 혹시 다음 강의 계획은 없으신가요?

0

58

1

STOMP 동작 과정 질문

0

51

1

chain.doFilter()

0

45

1

자바 21로 소스 작성해도 되나요?

0

62

2

메시지 브로커 선택에 관한 질문

0

66

2

WebSocket과 Spring Security 질문

0

82

2

추가 커스텀 구현 질문 있습니다.

0

61

2

connect와 동시에 구독하는데 구독 검증이 꼭 필요한가요?

0

97

2

저도 동일한 질문인데

0

80

3

token이 필요한 엔드포인트에 의도적으로 토큰 누락시 대처

0

69

2

수업자료가 왜 다 나눠져있나요?

0

80

2

메시지 전송 시 검증

0

62

2

JWT 생성 시 subject 설정에 대한 질문

0

161

3

StompHandler 질문 있습니다.

0

82

2

앱 서비스일 경우

0

87

2

웹소켓 서버 재배포시 고려해야 할 상황 질문

0

113

2

배포 오류 질문

0

126

2

/connect 경로에 대한 토큰 검증의 필요성

0

80

1

JwtTokenProvider 작성중 오류 발생으로 문의드립니다.

0

101

2