본문 바로가기

Back-End/Spring129

[Spring Security] 권한 부여 구성 요소 보호되어 있는 글 입니다. 2022. 9. 23.
[Spring Security] 구성 요소 및 인증 과정 인증 처리 흐름 📄 SecurityContextHolder - 인증한 대상에 대한 상세 정보를 담는다. 📗 SecurityContext - SecurityContextHolder에 접근할 수 있으며, 현재 인증한 사용자의 Authentication을 가진다. 📗 Authentication - 사용자가 제공한 credential이나 SecurityContext에 있는 사용자의 credential을 제공하며, AuthenticationManager의 입력으로 사용한다. 📗 GrantedAuthority - 접근 주체(principal)에게 부여된 권한이다. (role) 📗 AuthenticationManager - 필터가 인증을 어떻게 수행할지 정의하는 API이다. 📄 ProviderManager - Aut.. 2022. 9. 22.
[Spring Security] 웹 요청 처리 흐름, 서블릿 필터와 필터 체인 보안이 적용된 웹 요청의 일반적인 흐름 사용자가 보호된 리소스를 요청한다. 인증 관리자(컴포넌트)가 사용자의 크리덴션(Credential, 증명 수단)을 요청한다. ex) 패스워드 인증 관리자에게 크리덴션을 제공한다. 인증 관리자는 크리덴션 저장소에서 사용자의 크리덴션을 조회한다. 인증 관리자는 사용자가 제공한 크리덴션과 크리덴셜 저장소의 크리덴션을 비교해 검증한다. 유효한 크리덴션이 아니면 Exception을 throw 한다. 유효하다면, 접근 결정 관리자(컴포넌트)는 사용자가 적절한 권한을 가지고 있는지 검증한다. 적절한 권한을 부여받지 못한 사용자라면 Exception을 throw 한다. 권한이 있는 사용자라면 보호된 리소스의 접근을 허용한다. 서블릿 필터와 필터 체인 Spring Security는.. 2022. 9. 22.
[Spring Boot] JUnit으로 단위 테스트(Unit Test) 코드 작성하기 📗: 인터페이스, 📄: 클래스 helper ㄴ 📗 ControllerTestHelper : HttpMethod에 따라 요청 메서드 생성, URI 반환 ㄴ 📗 MemberControllerTestHelper : Member 컨트롤러에 대한 URI를 호출할 수 있도록 연결 ㄴ 📄 StubData : Map으로 HttpMethod에 따라 Dto 객체를 생성하여 반환 controllerTest ㄴ 📄 MemberControllerTest : helper를 활용하여 테스트 수행 단위 테스트 코드를 작성할 때 아래 두 가지의 라이브러리가 사용된다. JUnit5: 자바 단위 테스트를 위한 테스팅 프레임워크 AssertJ: 자바 테스트를 돕기 위해 다양한 문법을 지원하는 라이브러리 단위 테스트는 given - when.. 2022. 9. 18.
Spring Boot에서 메일 발송하기(Google SMTP) 회원가입을 하면 이메일로 회원가입 성공 메시지를 전송할 수 있다! 전체 로직: 클라이언트 > Controller Post 요청 > Service의 회원가입 로직 > Event 발행 > Email 전송 로직 실행 0. Google 앱 비밀번호 발급 Google 계정 관리 > 2단계 인증 활성화 > 앱 비밀번호 > 메일, Windows 컴퓨터로 지정하고 발급 1. 의존성 추가 //build.gradle implementation 'org.springframework.boot:spring-boot-starter-mail' 2. Gmail SMTP 설정 추가 //application-local.yml mail: smtp: host: smtp.gmail.com port: 587 username: ${EMAIL_U.. 2022. 9. 17.
[Spring MVC] 애플리케이션 빌드 / 실행 / 배포 애플리케이션을 서버 환경에서 실행하려면 Gradle이나 Maven 같은 빌드 툴로 빌드하는 과정이 필요하다. 빌드 🌳 IntelliJ IDEGradle 탭 > 프로젝트 이름 > Tasks > build > :bootJar 또는 :build taskbuild/libs 디렉토리에 Jar 파일(로컬 PC에서 실행 가능한 파일)이 생성된다.:build : :assemble, :check 같이 Gradle에서 빌드와 관련된 모든 task를 실행한다.실행 가능한 Jar 파일 외에 plain Jar 파일이 하나 더 생성된다.:bootJar : 모든 task를 실행하는 것이 아니라 실행 가능한 Jar 파일을 생성하기 위한 task만 실행된다. 🌳 Gradle TaskWindow 터미널PS D:project\hell.. 2022. 9. 16.