JWT 관련 질문입니다.
354
작성한 질문수 7
https://www.inflearn.com/questions/810394/%EC%9D%B8%EC%A6%9D%EC%9A%94%EC%B2%AD%EC%8B%9C-%EB%AC%B8%EC%9D%98%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4
호돌맨님 강의 정말 잘 듣고 있습니다. 다름이 아니라 저도 이 질문과 같은 의문이 생겼는데 해답을 찾지 못해 질문드립니다. 추가적으로 accessToken이
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiaWF0IjoxNjgzMzQwODAzfQ.4c7pfgz689iJdKBrInNP4QBf7YLc-bW_FVkb0JNHvk
라고 했을 때 맨뒤 k를 다른 알파벳으로 바꿔도 정상적으로 요청이 되는 경우가 있던데 이 이유도 잘 모르겠습니다.. 알려주시면 감사하겠습니다 !!
답변 1
0
안녕하세요. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.
JWT 토큰 검증
동일한 key로 생성한 암호화 데이터는 언제든지 복호화 될 수 있습니다. 해당 정보는 동일한 key로 암호화 한 이상 우주에서는 영원불멸합니다.
질문자분께서 로그인을 여러번 하여 토큰을 몇 개 발급 했는지는 중요하지 않습니다.
로그인 과정에서 토큰을 발급받는 것은 이 열쇠를 획득하는 과정과 비슷합니다. 열쇠는 보안을 강화하기 위해 매번 새로운 형태로 제작됩니다. 토큰 역시 각각의 로그인 시도마다 새로운 값으로 발급됩니다.
이전에 획득한 열쇠로 문을 여는 것이 가능한 이유는 문 앞에서 열쇠를 검증하는 과정에서 문에 부착된 장치가 열쇠를 인식하고, 열쇠의 유효성을 확인하기 때문입니다. 이 장치는 열쇠에 부여된 고유한 특성을 가지고 있어서 이전에 발급된 열쇠라도 검증이 가능합니다.
그러므로 한 번 발급된 토큰은 재 사용될 수 있기때문에 클라이언트 측에서 유출되지 않도록 관리하는게 중요합니다.
예를들어 서버에서는 발급 된지 오래된 토큰은 인증처리 되지 않도록 할 수 있습니다.
복호화
암호화 할때 사용하신 key를 말씀해주시면 테스트 해보도록 하겠습니다.
감사합니다.
1
답변해주셔서 감사합니다 !
추가적으로 accessToken이
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiaWF0IjoxNjgzMzQwODAzfQ.4c7pfgz689iJdKBrInNP4QBf7YLc-bW_FVkb0JNHvk
라고 했을 때 맨뒤 k를 다른 알파벳으로 바꿔도 정상적으로 요청이 되는 경우가 있던데 이 이유도 잘 모르겠습니다.. 알려주시면 감사하겠습니다 !!
이 부분은 호돌맨님이 올려주신 코드에서 테스트를 진행했었습니다 !
1
안녕하세요. 민혁님
민혁님이 주신 accessToken으로 제가 복호화를 시도하면 (끝에 k 여부와 상관없이) 예외가 발생합니다.
JWT 키가 달라서 그런것 같습니다.
강의에서 진행한 키는 rTPmA9Sgk+Q1XwuJbG7E6xFFUhQpdi+al5iyPnRTK/Q= 입니다.
혹시 민혁님이 실습에서 사용하신 key를 알려주시면 다시 시도해보겠습니다.
아래와같이 테스트를 진행했습니다.
@Test
@DisplayName("JWT 복호화 테스트")
void test_20230508_142641() {
// given
String accessToken = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiaWF0IjoxNjgzMzQwODAzfQ.4c7pfgz689iJdKBrInNP4QBf7YLc-bW_FVkb0JNHvk";
String key = "rTPmA9Sgk+Q1XwuJbG7E6xFFUhQpdi+al5iyPnRTK/Q=";
// when
Jws<Claims> claims = Jwts.parserBuilder()
.setSigningKey(Base64.decodeBase64(key))
.build()
.parseClaimsJws(accessToken);
// then
assertNotNull(claims.getSignature());
}감사합니다.
0
제가 설명을 잘못드린 것 같아 호돌맨님이 올려주신 코드 기준으로 다시 말씀드리겠습니다 !
먼저 회원 가입 후 auth.http로 accessToken 발급 받았습니다. 발급 받은 토큰은 사진과 같습니다.
그런데 아래 사진과 같이 post.http로 발급 받은 accessToken의 맨 마지막 알파벳인 Y를 Z로 바꿨을 때 에러가 발생하지 않고 정상적으로 값이 반환되는 것을 확인할 수 있었습니다.
다만, 모든 알파벳이 되는 것이 아니고 되는 경우도 있고 안 되는 경우도 있는데 이유가 궁금해서 여쭤봤습니다.

0
안녕하세요.
호돌맨입니다.
다시 테스트를 진행 해봤는데요, 인증이 정상적으로 성공/실패 됩니다.
accessToken을 암,복호화 하는 테스트 코드를 작성해보시면 어떨까요?
혹은 github 링크를 제공해주시면 자세히 보도록 하겠습니다.ㅠ
감사합니다.
Deprecated 관련 사항들
0
105
2
깃헙 collaboator 초대 관련
0
89
1
강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다
0
157
2
logout 후에 login 페이지 이동은 어디서 시켜주는건가요?
0
233
1
다중 데이터를 삭제 할 때
0
271
2
querydsl Q class 이슈
0
416
2
Windows WSL Vue 설정
2
247
1
Dip, @transactional
0
189
1
[vite] http proxy error: /auth/login
0
1047
2
로그인 하고 나서 GET요청으로 메인페이지 요청
0
234
2
GitHub Collaborator 초대 관련
0
258
2
Window에서 Vue.js 설정
0
322
2
collaboator로 초대받을 수 있을까요??
0
283
2
SecurityMockContext 로부터 유저 정보를 가져오기
0
262
1
섹션9 프론트의 코드를 보고싶습니다,,,
0
423
1
Spring Security - defaultSuccessUrl 질문
0
627
1
강의 화면이 나오지 않습니다. 음성과 자막만 나와요
0
302
1
JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ
0
690
2
ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상
0
1182
2
섹션10 언제 나오나요?
0
485
1
CommentService에서 Repository를 호출하지 않는데도
0
345
1
Editor....를 활용한 패턴에 질문있습니다.
0
496
1
섹션9 vue
0
456
2
Post에 edit 메서드 삼항연산자 질문
0
476
2





