23.07.17 00:33 작성
·
482
·
수정됨
0
강의 : 검증 아키텍처 이해 - BearerTokenAuthenticationFilter
안녕하세요 강사님, 강의 학습중 질문이 있습니다.
다음은, 시큐리티 설정 파일 일부 코드이며
여기서 JwtAuthorizationRsaPublicKeyFilter 를 추가로 Bean 등록하였는데요.
일단 Bearer 에 관련된건 BearerTokenAuthenticationFilter가 수행하고
doFilterInternal 메서드에서 시큐리티 컨텍스트에 저장 하는 코드를 확인했습니다.
여기서 수업시간에 생성한 JwtAuthorizationRsaPublicKeyFilter 필터입니다
첫번째 질문
강의 예제 한에서는 시큐리티 컨텍스트에 저장하는
초점에 있어서는,
JwtAuthorizationRsaPublicKeyFilter 필터가 없어도 문제 없는것 같은데 제 생각이 맞나요?
두번째 질문
두 필터의 순서는 어떻게 지정되는건가요?
세번째 질문
또한 JwtAuthorizationRsaPublicKeyFilter 필터에 추가적인 로직을 부여한다면,
1. 직접 커스텀 필터를 특정 필터 전/후에 등록
2.리프레쉬 토큰 로직
3.DB 커넥션이 필요한 작업
4. 토큰 유효시간 검증
등과 같은 작업할때 일까요?
아니면 또다른 상황이 있을까요?
답변 2
1
1
2023. 07. 18. 20:20
네
첫번째 질문
BearerTokenAuthenticationFilter 를 활성화 했다면 이 필터에서 토큰을 검증하고 검증에 성공하게 되면 인증객체를 생성하게 되고 SecurityContext 에 인증객체를 저장하는 과정이 있기 때문에 JwtAuthorizationRsaPublicKeyFilter 에서 다시 SecurityContext 에 인증객체를 저장할 필요는 없긴 합니다. 다만 JwtAuthorizationRsaPublicKeyFilter 에 생성하는 인증객체 정보와 BearerTokenAuthenticationFilter 에서 생성하는 인증객체 정보는 다르기 때문에 어떤 인증객체를 활용할 것인지에 따라 결정이 필요할 것 같습니다.
두번째 질문
필터는 HttpSecurity 에 있는 API 를 통해서 추가할 수 있습니다.
http.addFilterBefore() 나 http.addFilterAfter() 메서드를 사용하시면 됩니다.
세번째 질문
이 부분은 서비스 환경에 따라 다양한 경우가 있어서 어떤 기준이 있는 것은 아닙니다. 다만 해당 필터의 목적과 역할이 무엇인지를 명확하게 설정하는 것이 중요합니다. JwtAuthorizationRsaPublicKeyFilter 클래스는 토큰에 대한 유효성을 검증하고 인증에 성공할 경우 사용자에게 리소스를 접근할 수 있는 권한을 부여하는 역할을 하고 있습니다. 이 역할의 기준에서 추가적인 로직을 고민해 봐야 합니다. 하나의 클래스가 책임져야 할 역할은 한가지여야 객체 지향적인 설계가 올바르게 구성이 됩니다. 위에서 나열한 부분이 그러한 기준에 부합하는지 검토해 보시기 바랍니다.