About me

MinJee Lee·2021년 5월 16일
0
post-thumbnail

Security 를 처음 접하면서 느낀점

다양한 Filter Chain이 Dispatchar Servlet 요청을 받기 전 목적에 맞는 인증,권한 처리를 진행하는 부분이 어떤 원리로 작용하는지 궁금했습니다. 각 Filter의 흐름과 역활을 이해하고 커스터마이징을 진행하면 개발자들에게 편리함을 제공해 준다는 점도 제게는 신선했습니다. 또한 어떤식으로 인증된 사용자 정보를 클래스 전역에 사용이 가능한지도 궁금했던 점이였습니다. 이 부분들은 프로젝트를 진행하며 조금씩 알게 되었습니다. SecurityContextPersistenceFilter는 request 전에 SecurityContextRepository에서 받아온 정보를 SecurityContextHolder에 주입하며 사용자 정보를 저장하고 사용할 수 있는 데 이 과정에서 SecurityContextHolder 는 ThreadLocal로 서블릿 기반의 웹프로그램은 요청마다 thread를 생성하게 된다는 것을 알았습니다. 또한 Security의 전반적인 설정을 담당하는 WebSecurityConfigurerAdapter 를 extends한 SecurityConfiguration에서 formLogin 위한 Security 설정을 하며 전반적인 흐름에 대해 경험하게 되었습니다.

AWS

프로젝트 완료 후 빌드 배포를 위한 자동화 시스템을 경험했습니다. AWS의 iam, codeDeploy,s3,ec2 그리고 Github action을 통해 CI,CD하는 과정을 경험했습니다. 코드의 변경사항이 생기면 정기적으로 s3 버킷에 build하고 파일을 zip하며 ec2 copy및 배포 과정을 통해 web에 관해 조금 더 이해할 수 있는 계기가 되었습니다. 처음에는 Web을 이해하지 못해 쉽지 않았지만 점차 터미널로 명령어를 직접 입력하며 조금씩 이해하게 되며 재미를 느꼈습니다. 또한 cron을 통해 Let’s Encyrpt의 ssl 인증서를 자동 갱신하며 스케쥴링 자동화를 경험했습니다.

Project 1.

  • 프로젝트 명 : dev-Match

팀을 이루어 함께 프로젝트를 진행하고 싶은 개발자들 간의 매칭 서비스

  • 프로젝트 개발 기간 : 2021.1.~2021.2.
  1. 사용한 기술 스택 : java11, spring boot 2.3.x, spring security, spring session(with oracle), Oracle 11g, thymeleaf, js, Mybatis framework
  2. 본론
    • 회원관리 중 로그인, 회원가입, 관리자 페이지를 Spring security Framework를 이용하여 보안, 인증, 인가 부분을 구현했습니다. 자체적으로 session을 체크하거나 redirect하지 않고 security에서 제공하는 옵션들을 이용하여 인증과 인가 절차를 구현했습니다. 구현 전 프로토 타입 설계와 ERD설계를 하며 프로젝트의 설계 부분에 대해 이해와 경험을 하게 되었습니다. 프로젝트를 진행하며 어려웠던 점은 spring security의 정보가 많지 않아 난감했던 기억이 있습니다. 하지만 spring.io의 도큐먼트를 보는 습관을 가지게 되었습니다. 특히 security 커스터마이징 하는 과정 속에서 security의 흐름을 이해하지 못하고 많은 에러를 경험하게 되었지만 에러 가운데 도큐먼트를 찾아보고 사용법을 익히며 프로젝트를 진행했습니다.

Project 2.

  • 프로젝트 명 : ShoppingMall

    미니쇼핑몰

  • 프로젝트 개발 기간 : 2020.11.~2020.12.

  1. 사용한 기술 스택 : java8, spring boot 2.3.x, Oracle 11g, jsp,jstl, js, Mybatis framework

  2. 본론

    • 회원관리 중 일반 유저와 관리자를 구분하여 일반 회원만 상품 구매가 가능하도록 구현했습니다. 관리자는 시스템에 등록된 모든 회원의 정보에 대한 열람 및 수정이 가능하며 회원은 자신의 정보를 열람 및 수정, 탈퇴가 가능합니다. 상품관리 중 관리자에 의해 판매 물건의 등록이 가능하며 등록된 물건은 구매자에 의해 조회가 가능합니다. 관리자는 구매된 물건의 목록과 상세보기가 가능하며 관리자에 의해 물건이 등록되면 판매등록 상태가 되고 구매자가 구매하면 구매상태가 됩니다. 처음 이 프로젝트를 진행하면서 spring의 이해와 MVC패턴의 흐름을 경험했습니다. 또한 MVC패턴의 장점인 유연하고 확장하기 쉬우며, 유지보수 비용이 절감되지만 기본기능 설계를 위해 클래스들이 많이 필요하여 복잡하고, Model과 View의 완벽한 분리가 어렵다는 단점을 경험했습니다. 의존성이 완벽히 분리 할 수 없기 때문에 패턴이 모호해질 수 있고 변형이 올 수 있다는 것을 알게 되었습니다. 이 단점을 보안하기 위해 다른 디자인패턴과 framework에 관하여 앞으로 더 배우고 경험하겠습니다.

    github

    https://github.com/MinJee-lee

    SpringSecurity

    https://www.notion.so/Spring-Security-89ea86cd73574443addf32c18e2de111

    github action

    https://github.com/MinJee-lee/lala/blob/master/.github/workflows/main.yml

    dev-match ERD & Mind map

0개의 댓글