인가 처리 로직에 대한 문의
330
작성한 질문수 22
안녕하세요 JWT 를 사용하여 Security 를 통해 애플리케이션을 ㄱ구축해봤었는데, 그 당시에는 JWT Token 을 강사님이 사용해주신 부분과 다르게 사용하였는데 문의 사항이 생겨서요!
궁금한 부분은 verify() 를 하는 부분입니다.
JwtToken 에는 ID 정보만을 넣었습니다. 그걸 통해서 verify 이후에 AuthorizationFilter 에서 직접 Member 를 DB 에 저장되어 있는지 확인하여 가져온 이후 LoginUser 정보를 만들어 SecurityContext 에 저장하였습니다. 강사님의 코드는 TOKEN 정보가 있는지, TOKEN 정보가 있으면 거기서 ID 와 ROLE 정보를 가져올 수 있는지만을 확인하고 있습니다.
이렇게 하면 TC 에서 확실히 간단해지는 면모도 있고, 사실 JWT 토큰 자체도 그렇게 의존할만한게 아닌 것으로 알기 때문에 의존성을 줄일 수도 있는 것 같고, 스프링 단에서도 어떤 방식으로 지속적인 구현을 하면 (가령, SecurityContext 에 저장된 사람의 정보가 필요할 때 비로소 id 를 가지고 와서 확인하는 등) 괜찮을 것 같다고 생각이 들었습니다.
보통 실무에서는 어떤 방식으로 하는지 궁금합니다!
답변 2
0
안녕하세요, 인프런 AI 인턴이에요. JWT를 사용한 인가 처리 로직에 대한 질문이시군요.
일반적으로 JWT 토큰에는 사용자의 ID와 ROLE 정보 등을 포함시킵니다. verify()는 토큰의 유효성을 검증하는 과정으로, 토큰이 변조되지 않았는지, 만료되지 않았는지 등을 확인합니다.
강사님의 코드에서는 verify() 이후에 토큰에 포함된 ID와 ROLE 정보를 가져오지 않는 것으로 보입니다. 대신, AuthorizationFilter에서 DB에 접근하여 해당 ID를 가진 회원 정보를 가져와서 LoginUser 정보를 생성하고 SecurityContext에 저장하는 방식을 사용하고 계신 것으로 이해했습니다.
일반적으로 실무에서는 어떤 방식을 사용하는지에 대해서는 정해진 규칙이 없습니다. 보안 및 퍼포먼스 요구사항, 시스템 구조 등에 따라 다양하게 구현할 수 있습니다. JWT 토큰을 인증에만 사용하고 나머지 정보는 DB에서 가져오는 방법도 일반적으로 많이 사용하는 방식입니다.
또한, JWT 토큰의 사용 여부는 선택사항이며, 토큰 자체의 의존성을 줄일 수 있는 다른 인증 방식을 사용해도 무방합니다.
따라서 실무에서는 강사님이 사용하신 방식과 같이 JWT 토큰에 필요한 정보만을 담고 나머지 정보는 DB에서 가져오는 방식을 선택하거나, JWT 토큰에 필요한 모든 정보를 담아 사용할 수도 있습니다. 구체적인 구현은 팀 혹은 프로젝트에 따라 다르기 때문에, 팀 내의 개발자들과의 의논이 필요한 경우도 있을 것입니다.
질문해주신 내용에 따라 의견을 제시해드리긴 했으나, 실제로 어떤 방식을 사용해야 하는지에 대한 판단은 프로젝트의 요구사항과 개발자의 판단에 따라 달라질 수 있습니다. 실무에서는 보안, 성능, 확장성 등을 고려하여 적절한 방식을 선택하게 됩니다.
더 자세한 내용이 있으시면 구체적인 상황을 알려주시면 추가적인 도움을 드릴 수 있을 것 같아요. 부족한 답변이라면 양해 부탁드리고, 궁금한 내용이 있으면 언제든지 질문해주세요. 즐거운 개발 되세요!
요청/응답 DTO 관련 문의
0
170
2
안녕하세요 인증이 필요한 url을 위하여 /s를 붙이는것에 대해 질문있습니다.
0
161
1
validation aop사용에 대해서 질문있습니다.
0
245
2
Dummy 클래스 위치에 대한 질문
0
293
2
테스트 방식에 관해서 질문이 있어요
0
292
2
스프링 버전업일 경우에는 Pointcut @PostMapping 조건이 달라질까요?
1
434
1
equals와 longValue 관련 질문드립니다
0
328
1
계좌번호를 Long 타입으로 하는 이유가 무엇일까요?!
0
499
2
[정보공유] Hibernate 로그 작동 안하시는 분들!!
3
346
0
UserControllerTest 테스트 실패 문의
0
318
1
스프링 시큐리티 6.2 버전 이후로 apply() 메서드를 이용한 JwtAuthenticationFilter 가 등록이 안됩니다.
2
1106
1
import 오류
0
426
3
spring initializer gradle 에서 3.x.x 대 밖에 없어요. 2.x.x는 보이지 않는데 어떡하져
0
438
2
안녕하세요 로그엔 성공적으로 들어온것같습니다..
0
237
1
JwtAuthorizationfilter test mvc.performget 관련 질문입니다!
0
286
1
JwtAuthorizationfilter test mvc.performget 부
0
226
1
longValue() 질문
0
228
1
jwt 인가필터 규현및 등록
0
334
1
스프링부트 3버전
1
334
1
권한처리를 위한 세션강제주입
0
418
1
JwtVO 를 인터페이스로 만든 이유
0
359
1
계좌 조회 질문드립니다
0
229
1
DummyObject 에 대하여
0
308
2
DTO를 이너클래스로 계속추가하는 이유
0
695
2





