TIL (Today I Learned)
TIL) AOP, Refresh Token, 지연로딩과 즉시로딩
Won's log
2023. 7. 14. 12:35
- Spring Security를 적용했을 때 어떤 점이 도움이 되셨나요?
- Spring Security을 잘 적용하진 못했지만 Spring Security를 통해 사용자의 인증과 인가를 부여/확인하여 서비스를 이용할 수 있도록 도울 수 있음을 알게 되었다.
- Spring Security를 사용하지 않는다면 어떻게 인증/인가를 효율적으로 처리할 수 있을까요?
- Spring Security에서 인증/인가는 쿠키와 세션을 통해 이용하는 것이므로 Spring Security를 사용하지 않는다면 수동으로 세션을 체크하고 redirect를 하는 방식으로 진행되어야 할 것 같다.
- AOP에 대해 설명해 주세요!
- Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이다.
- 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누고 그 관점을 기준으로 모듈화를 한다.
- 모듈화 : 공통된 로직이나 기능을 하나의 단위로 묶는 것
- 핵심적인 관점은 핵심 비즈니스 로직이며 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 보조적인 로직을 의미한다.
- 예) 핵심 로직: 회원 가입
- 예) 부가 로직: 회원 패턴 분석을 위한 로그 기록
- AOP를 통해 부가기능을 모듈화하게 된다면 핵심 로직과 분리해서 부가적인 관점의 로직을 중심으로 설계, 구현이 가능하다. 즉, 부가기능 로직의 변경이 필요할 시 핵심기능을 따라다니며 추가/변경할 필요 없이 훨씬 편리하게 로직을 구현할 수 있게 된다.
- RefreshToken 적용에 대한 장/단점을 작성해 주세요! 적용해 보지 않으셨다면 JWT를 사용하여 인증/인가를 구현 했을 때의 장/단점에 대해 숙련주차의 답변을 Upgrade 하여 작성해 주세요!
- Refresh Token을 적용해보지 않았지만 장단점을 다음과 같이 알아보았다.
- 장점: 보안을 위해 사용되었다. 다시 말해 JWT에서 사용자를 인증할 때 클라이언트가 본인이 맞는지 확인 검토가 필요한데 Access Token는 탈취될 수 있으므로 보안이 취약하다. 그러나 서버에서 Access Token의 유효기간을 짧게 하고 Refresh Token의 유효기간을 길게 만들어서 사용하면 사용자가 Access Token로 인증하고 만료 됐을 경우 Refresh Token으로 새로운 Access Token을 발급받으면서 정상적인 로그인을 할 수 있게 되고 보안면에서도 강화할 수 있게 된다.
- 단점 : Refresh Token이 탈취되는 보안의 취약성이 존재한다.
- JWT를 사용하여 인증/인가 구현했을 경우 장단점을 다음과 같이 이야기할 수 있다.
- 장점: 사용자에게 짧은 유효기간을 가진 토큰을 발급하기 때문에 공격자로부터 공격을 받을 가능성이 적어진다.
- 단점: 그럼에도 토큰이 탈취될 위험이 있으므로 추가적인 보안 구현이 필요하다.
- Refresh Token을 적용해보지 않았지만 장단점을 다음과 같이 알아보았다.
- 즉시로딩 / 지연로딩에 대해 설명해 주세요!
- 즉시로딩(@xxToxx(fetch = fetchType.EAGER)이란 데이터를 조회할 때, 연관된 모든 객체의 데이터까지 한번에 불러오는 것을 말한다.
- 지연로딩(@xxToxx(fetch = fetchType.LAZY)이란 필요한 시점에서 연관된 객체의 데이터를 불러오는 것. 실무에서는 지연로딩을 자주 사용한다고 한다.
- IoC / DI 에 대해 간략하게 설명해 주세요!
- IoC
- "제어의 역전" 이라는 의미로, 메서드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다.
- 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.
- DI
- 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입 시켜주는 방식을 사용한다.
- DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다.
- IoC
추후에 볼 Spring Security 관련 자료 :
https://mangkyu.tistory.com/76
[SpringBoot] Spring Security란?
대부분의 시스템에서는 회원의 관리를 하고 있고, 그에 따른 인증(Authentication)과 인가(Authorization)에 대한 처리를 해주어야 한다. Spring에서는 Spring Security라는 별도의 프레임워크에서 관련된 기능
mangkyu.tistory.com