Security Filter Chain & DelegatingPasswordEncoder
📘 Backend/Spring2023. 4. 4. 12:34Security Filter Chain & DelegatingPasswordEncoder

Filter Chain Request URI Path를 기반으로 HttpServletRequest 를 URI Filter & Servlet 매핑 필터체인 안에서 순서를 지정할 수 있으며, 순서는 매우 중요 순서를 지정하기 위한 @Order & Ordered 인터페이스를 구현해서 순서 지정 FilterRegistrationBean을 이용해 순서 지정 가능 Spring Security의 Filter Chain은 URL별로 여러개 등록 가능 어떤 Filter Chain을 사용할지는 FilterChainProxy가 결정하며, 가장 먼저 매칭된 Filter Chain을 실행 Servlet Filter Chain의 2가지 종류 DelegatingFilterProxy(Servlet Filter Chain) Bean으..

Spring Security 구조
📘 Backend/Spring2023. 4. 4. 12:30Spring Security 구조

📘Spring Security 어플리케이션에 Spring Security가 없을때 중요한 요소가 빠져있다. Authentication (인증) Authorization (인가) 웹 보안 취약점에 대한 방지 Spring Security를 사용하는 이유 특정 보안 요구사항을 만족하기 위한 Customizing 용이 유연한 확장 보안기능이 검증된 신뢰할만한 보안 프레임워크 Spring Security의 로그인 인증 방식 Form Login 방식 : SSR 방식의 어플리케이션에서 주로 사용 Security를 적용하여 보안 취약으로 인한 사고 방지 방법 SSL 적용 Role 별 권한 적용 많은 유형의 사용자 인증 기능 민감 정보 암호화 resource ACL 알려진 웹 공격 차단 Spring Security 용어..

HTTPS 적용
📘 Backend/Spring2023. 4. 3. 08:35HTTPS 적용

📘사설 CA 발급 + HTTPS 적용 우분투, OpenSSL 사용 X Centos에는 인증서 발급을 위한 nss-tools가 이미 설치 되있으므로 설치 불필요 AWS 보안그룹 -> 사용할 포트 오픈 인증서 발급 & Application HTTP -> HTTPS 적용 ✅ AWS 인스턴스 생성 & pem -> ppk 변환 AWS Instance pem -> ppk 변환 ✅ EC2 인스턴스 보안그룹에 이어 2중 방화벽 firewalld 설치 AWS Instance ssh 연결, yum update, yum-utils, wget, firewalld 설치 ✅ 방화벽 포트, 서비스 오픈 ✅ 포트, 서비스 적용 확인 ✅ wget을 이용하여 mkcert 파일 download, 파일 권한 변경 mksert파일 wget,..

Build & Deploy & DB 연동
📘 Backend/Spring2023. 4. 3. 08:21Build & Deploy & DB 연동

📘Application Deployment & Build IDE Tool이 없는 환경 Windows PS C:/{direction}> .\gradlew bootjar Git Project Directory 이동 ./gradlew build java -jar {project-name}.jar server-properties.active="" 프로젝트 빌드 어플리케이션 실행 Profile을 이용한 DB 설정 정보 포함 application-{name}.yml 형식의 환경 별 파일 생성 후 DB별로 설정 정보 분리 서버 배포 PaaS CF CLI 사용 - cf push acloudyspringtime -p target/{file-name}.jar IaaS AWS Beanstalk, Container Regis..

Rest docs (API Documentation)
📘 Backend/Spring2023. 4. 3. 08:16Rest docs (API Documentation)

📘API Documentation (Spring Restdocs) Swagger에 비해 Spring RestDocs는 기능 구현과 관련된 코드에 API 문서 생성을 위한, 어노테이션같은 어떠한 정보도 추가되지 않음 클라이언트에서 REST API 기반의 백엔드 어플리케이션의 사용을 위한 정보 API Documentation의 자동화가 필요한 이유 사람의 실수로 인한 업데이트된 정보의 누락 수기 작성의 비효율성 생산성 향상 Swagger vs Spring Rest Docs Swagger 장점 - API 요청 툴로써 기능 사용 가능 단점 - Swagger는 기능 구현과 관계없는 많은 어노테이션 사용으로 인한 코드 간결성 저하 Spring Rest Docs 장점 - 테스트와 구현한 기능에서 정보가 하나라도 일치..

Testing (Mockito) & Assertion
📘 Backend/Spring2023. 4. 3. 08:09Testing (Mockito) & Assertion

📘 Test JUnit은 표준 테스트 프레임워크이다 기능 테스트 테스트의 범위 중 제일 큰 테스트, 어플리케이션 전체에 걸친 테스트 통합 테스트 테스트 주체가 어플리케이션 제작 개발팀 or 개발자 단위 테스트, 클라이언트 툴 없음 슬라이스 테스트 어플리케이션을 특정 계층으로 나눠서 테스트 단위 테스트 어플리케이션의 핵심 비즈니스 로직 메소드의 독립적인 테스트 단위 테스트의 F.I.R.S.T 원칙 Fast Independent Repeatable Self-validating Timely given - when - then Pattern given 테스트에 필요한 전제조건 포함 when 테스트 동작 지정 then 테스트 결과 검증, 값 비교 (Assertion) Hamcrest를 사용한 Assertion A..

Transaction & AOP 방식 / 분산 트랜잭션
📘 Backend/Spring2023. 4. 3. 08:07Transaction & AOP 방식 / 분산 트랜잭션

📘 Transaction ACID 원칙 원자성 (Atomicity) All or Nothing 보장 일관성 (Consistency) 어떤 값 증가시 연관된 값 일관성있게 증가 격리성 (Isolation) 각 트랜잭션 당 각각 독립적 실행 지속성 (Durability) 트랜잭션 완료 후 결과 지속 보장 트랜잭션 커밋 & 롤백 Commit 완료된 작업 최종 DB 반영 - 트랜잭션 종료 RollBack 작업중 문제 발생 시 수행작업 취소 -> 원상태 복귀 조회 메소드에는 @Transaction의 Attr을 readOnly=true 로 설정함으로써 성능 최적화 과정을 거치도록 한다 트랜잭션 전파 (Transaction Propagation) @Transactional의Attribute Propagation.RE..

image