본문 바로가기

Spring17

[Java] Jasypt 알아보기 🙋 들어가며 프로젝트를 진행할 때 보안에 예민해서 노출시키지 않는 값들이 있습니다. 여러 방법으로 노출시키지 않는 방법이 있지만 그중에 Jasypt라는 라이브러리가 존재합니다. 오늘은 어떻게 사용하는지 가볍게 알아보겠습니다. 😋 🔐 Jasypt란? Jasypt는 Java Simplified Encryption의 약자입니다. 공식 문서에 따르면 다음과 같이 설명되어 있습니다. Java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography wor.. 2023. 10. 21.
[Backend] flyway 사용하기 🙋 들어가며 우리는 코드를 관리하기 위해서 git이라는 형상 관리 툴을 사용합니다. 반면에 여러분들은 DB는 어떤 것으로 형상을 관리하시나요? 바로 Flyway가 DB에 대한 형상 관리를 제공합니다. 이번 글에서 간단하게 사용법을 알아보겠습니다. 😋 🪽 flyway란? 공식 문서에는 다음과 같이 소개합니다. 😮 Flyway is an open-source database migration tool. DB 형상 관리를 도와주는 도구입니다. 심지어 오픈 소스입니다! 😋 🤔 왜 사용할까? 저는 개발을 할 때 DDL을 직접 작성해서 관리하는 것을 선호합니다. 스키마에 변경사항이 생기면 하나하나 수정했습니다. (다행히도 꼼꼼한 성격 때문에 아직까진 실수한 적 없습니다 😜) 만약 관리해야 할 DB가 많다면 이 과정.. 2023. 10. 11.
[Security] 시큐리티 파헤치기 (4) : 인증이란? (feat. Authentication) 🙋 들어가며 이번 글부터 시큐리티의 인증 시리즈를 다뤄볼 생각입니다. 인증에 대해서 무엇인지 알아보면서 인증 시리즈를 시작해 보겠습니다. 또한, 어떤 객체에 인증 정보를 담을지까지 알아보겠습니다. 🙆‍♂️ 인증(Authentication)? 인증이란, 어떤 사용자가 접근하고 있는지 확인하는 절차입니다. 보안에 민감한 정보를 다룬다면 당연히 누가 사용하는지 확인하고 접근시켜야 합니다. 자세하게 어떻게 동작하는지는 몰라도, 인증하려면 정보를 담아줄 그릇이 필요할 것 같습니다. 바로 이 그릇이 Authentication 객체입니다. 🪙 Authentication 인터페이스 Authentication 인터페이스는 인증 정보를 담는 하나의 토큰입니다. 실제 코드는 다음과 같이 구현되어 있습니다. public in.. 2023. 8. 17.
[Security] 시큐리티 파헤치기 (2) : RequestCacheAwareFilter, RequestCache 🙋 들어가며 스프링 시큐리티 필터에는 다양한 필터들이 존재합니다. 오늘은 그중에서 인증, 인가를 위해서 가로채진 요청을 어떻게 다시 수행하는지 알아보겠습니다. ↩️ RequestCacheAwareFilter 이름에서 어떤 역할을 하는지 대략적으로 알 수 있습니다. 대충 요청에 대한 캐시를 알고 있는 필터 같습니다. 동작을 이해하기 위해서는 내부적으로 무엇을 가지고 있는지 알아야 합니다. 🏛️ 시큐리티 아키텍처 시큐리티는 결국 인증과 인가를 위한 프레임워크입니다. 인증을 위한 Authentication Manager와 인가를 위한 Access Decision Manager가 핵심입니다. 요청한 자원이 인증이 필요하다면 요청을 가로채 인증한 뒤 다시 원래 요청으로 되돌아가야 합니다. 시큐리티는 Reques.. 2023. 8. 2.
TIL : Bean 컨테이너와 ComponentScan (22) 🎛️ ApplicationContext 스프링에서 핵심인 ApplicationContext는 Bean을 관리해준다. 싱글톤 레파지토리로도 불리는데 Bean을 싱글톤으로 관리해주기 때문이다. 우리가 작성한 설정 정보를 적용시키려면 @Configuration을 붙여준다. 여기에 싱글톤의 비밀이 들어있다. 설정 정보는 우리가 작성한 순수 자바 클래스가 빈으로 등록되는 것이 아니다. 작성한 자바 클래스를 상속받는 임의의 다른 클래스를 만들고 빈으로 등록한다. 여기서는 CGLIB라는 바이트코드 조작 라이브러리를 사용한다. CGLIB 라이브러리가 내부적으로 어떻게 구현되었는지는 모르겠지만, 빈이 존재하면 기존 인스턴스를 반환하고 아니라면 생성할 수 있도록하는 클래스로 변환될 것이다. 따라서 @Configuratio.. 2023. 5. 17.
[토비의 스프링] 테스트 (2장) 2.1 UserDaoTest 다시 보기 2.1.1 테스트의 유용성 UserDao에서 관심을 분리하고 기능을 확장할 때 테스트가 없었다면 불안했을 것이다. 머릿속으로 시뮬레이션을 돌려보는 방법은 100% 확신할 수 없기 때문에 테스트란 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지 확신할 수 있게 해주는 작업이 필요하다. 2.1.2 UserDaoTest의 특징 웹을 통한 DAO 테스트 방법의 문제점 웹 화면을 통한 테스트는 가장 흔히 쓰이는 방법이지만 단점이 너무 많다. 테스트를 위해 사용되는 자원이 많기 때문에 DAO만 테스트하고 싶은데 다른 곳에서 문제가 발생할 수 있다. 작은 단위의 테스트 테스트 수행 과정을 간단히 하고 오류를 쉽게 찾을 수 있게 하기 위해서 작은 단위로 쪼개는 것이 중요하다.. 2023. 1. 16.