다양한 Filter Chain이 Dispatchar Servlet 요청을 받기 전 목적에 맞는 인증,권한 처리를 진행하는 부분이 어떤 원리로 작용하는지 궁금했습니다. 각 Filter의 흐름과 역활을 이해하고 커스터마이징을 진행하면 개발자들에게 편리함을 제공해 준다는 점도 제게는 신선했습니다. 또한 어떤식으로 인증된 사용자 정보를 클래스 전역에 사용이 가능한지도 궁금했던 점이였습니다. 이 부분들은 프로젝트를 진행하며 조금씩 알게 되었습니다. SecurityContextPersistenceFilter는 request 전에 SecurityContextRepository에서 받아온 정보를 SecurityContextHolder에 주입하며 사용자 정보를 저장하고 사용할 수 있는 데 이 과정에서 SecurityContextHolder 는 ThreadLocal로 서블릿 기반의 웹프로그램은 요청마다 thread를 생성하게 된다는 것을 알았습니다. 또한 Security의 전반적인 설정을 담당하는 WebSecurityConfigurerAdapter 를 extends한 SecurityConfiguration에서 formLogin 위한 Security 설정을 하며 전반적인 흐름에 대해 경험하게 되었습니다.
프로젝트 완료 후 빌드 배포를 위한 자동화 시스템을 경험했습니다. AWS의 iam, codeDeploy,s3,ec2 그리고 Github action을 통해 CI,CD하는 과정을 경험했습니다. 코드의 변경사항이 생기면 정기적으로 s3 버킷에 build하고 파일을 zip하며 ec2 copy및 배포 과정을 통해 web에 관해 조금 더 이해할 수 있는 계기가 되었습니다. 처음에는 Web을 이해하지 못해 쉽지 않았지만 점차 터미널로 명령어를 직접 입력하며 조금씩 이해하게 되며 재미를 느꼈습니다. 또한 cron을 통해 Let’s Encyrpt의 ssl 인증서를 자동 갱신하며 스케쥴링 자동화를 경험했습니다.
팀을 이루어 함께 프로젝트를 진행하고 싶은 개발자들 간의 매칭 서비스
프로젝트 명 : ShoppingMall
미니쇼핑몰
프로젝트 개발 기간 : 2020.11.~2020.12.
사용한 기술 스택 : java8, spring boot 2.3.x, Oracle 11g, jsp,jstl, js, Mybatis framework
본론
https://www.notion.so/Spring-Security-89ea86cd73574443addf32c18e2de111
https://github.com/MinJee-lee/lala/blob/master/.github/workflows/main.yml