전체 글316 6) 자동 구성(Auto Configuration) 자동 구성(Auto Configuration) 예제 만들기 스프링 부트가 제공하는 자동 구성(Auto Configuration)을 이해하기 위해 간단한 예제를 만들어보자.JdbcTemplate을 사용해서 회원 데이터를 DB에 저장하고 조회하는 간단한 기능이다 Member@Datapublic class Member { private String memberId; private String name; public Member() { } public Member(String memberId, String name) { this.memberId = memberId; this.name = name; }} memberId , name 필드가 있는 .. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 8. 5) 스프링 부트 스타터와 라이브러리 관리 라이브러리 관리의 어려움 프로젝트를 처음 시작하면 어떤 라이브러리들을 사용할지 고민하고 선택해야 한다. 예를 들어서 스프링 WEB, 내장 톰캣, JSON 처리기, 로거 등등 수 많은 라이브러리를 선택해야 한다.여기에 추가로 각 라이브러리의 버전까지 고민해야 한다. 더 심각한 문제는 각 라이브러리들끼리 호환이 잘 되는 버전도 있지만 잘 안되는 버전들도 있다. 과거에는 이런 문제들 때문에 처음 프로젝트를 세팅하는데 상당히 많은 시간을 소비했다. 스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 다양한 기능들을 제공한다. - 외부 라이브러리 버전 관리 - 스프링 부트 스타터 제공 라이브러리 직접 관리 스프링 부트가 제공하는 편리한 라이브러리 관리 기능을 사용해보기 전에,잠깐 과거로 .. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 7. 4) 스프링 부트와 내장 톰캣 (2) 편리한 부트 클래스 만들기 지금까지 진행한 내장 톰캣 실행, 스프링 컨테이너 생성, 디스패처 서블릿 등록의 모든 과정을 편리하게 처리해주는나만의 부트 클래스를 만들어보자.부트는 이름 그대로 시작을 편하게 처리해주는 것을 뜻한다.MySpringApplicationpublic class MySpringApplication { public static void run(Class configClass, String[] args){ System.out.println("MySpringApplication.run args = " + List.of(args)); // 톰캣 설정 Tomcat tomcat = new Tomcat(); Connector connect.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 5. 3) 스프링 부트와 내장 톰캣 (1) 스프링 부트와 내장 톰캣 WAR 배포 방식의 단점 웹 애플리케이션을 개발하고 배포하려면 다음과 같은 과정을 거쳐야 한다. - 톰캣 같은 웹 애플리케이션 서버(WAS)를 별도로 설치해야 한다. - 애플리케이션 코드를 WAR로 빌드해야 한다. - 빌드한 WAR 파일을 WAS에 배포해야 한다. 웹 애플리케이션을 구동하고 싶으면 웹 애플리케이션 서버를 별도로 설치해야 하는 구조이다. 과거에는 이렇게 웹 애플리케이션 서버와 웹 애플리케이션 빌드 파일(WAR)이 분리되어 있는것이 당연한 구조였다. 그런데 이런 방식은 다음과 같은 단점이 있다. 단점 톰캣 같은 WAS를 별도로 설치해야 한다. 개발 환경 설정이 복잡하다. - 단순한 자바라면 별도의 설정을 고민하지 않고, main() 메서드만 실행하.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 4. 19) 인가 프로세스 - 요청 기반 권한 부여HttpSecurity.authorizeHttpRequests() 요청 기반 권한 부여 - HttpSecurity.authorizeHttpRequests() Spring Security는 요청 기반 권한 부여(Request Based Authorization)와메소드 기반 권한 부여(Method Based Authorization )를 통해 자원에 대한 심층적인 방어를 제공한다 요청 기반 권한 부여는 클라이언트의 요청 즉 HttpServletRequest에 대한 권한 부여를 모델링 하는 것이며이를 위해 HttpSecurity 인스턴스를 사용하여 권한 규칙을 선언 할 수 있다 @BeanSecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception { http.authorizeH.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 11. 1. 2) 웹 서버와 서블릿 컨테이너 웹 서버와 서블릿 컨테이너 서블릿 컨테이너 초기화1 WAS를 실행하는 시점에 필요한 초기화 작업들이 있다. 서비스에 필요한 필터와 서블릿을 등록하고, 여기에 스프링을 사용한다면 스프링 컨테이너를 만들고,서블릿과 스프링을 연결하는 디스페처 서블릿도 등록해야 한다. WAS가 제공하는 초기화 기능을 사용하면, WAS 실행 시점에 이러한 초기화 과정을 진행할 수 있다. 과거에는 web.xml 을 사용해서 초기화했지만, 지금은 서블릿 스펙에서 자바 코드를 사용한 초기화도 지원한다. 디스패처 서블릿은 스프링 MVC의 핵심 요소로,클라이언트의 모든 요청을 받아서 적절한 컨트롤러로 위임하는 프론트 컨트롤러(Front Controller) 역할 import org.springframework.stereot.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 10. 31. 1) 스프링부트 소개, 톰캣 설정 스프링 부트 부트? -> BOOT, 부팅 • 최소한의 인간 개입으로 시작하고 완전히 작동하는 것을 의미• 어떤 일을 시작하기 위해 필요한 모든 준비를 마친다는 의미 • 시작을 위한 복잡한 설정 과정은 스프링 부트가 해결 • 개발자는 새로운 스프링 애플리케이션을 쉽고 빠르게 시작 • 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 • 관례에 의한 간결한 설정 핵심 기능 5가지 • WAS: Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 • 라이브러리 관리 손쉬운 빌드 구성을 위한 스타터 종속성 제공스프링과 외부 라이브러리의 버전을 자동으로 관리 • 자동 구성: 프로젝트 시작에 필요한 스프링과.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 10. 31. 18) 악용보호 - SameSite SameSite SameSite는 최신 방식의 CSRF 공격 방어 방법 중 하나로서 서버가 쿠키를 설정할 때 SameSite 속성을 지정하여 크로스 사이트 간 쿠키 전송에 대한 제어를 핸들링 할 수 있다 Spring Security는 세션 쿠키의 생성을 직접 제어하지 않기 때문에 SameSite 속성에 대한 지원을 제공하지 않지만 Spring Session 은 SameSite 속성을 지원한다 더보기크로스 사이트(Cross-site)란 웹 애플리케이션에서 서로 다른 출처(도메인) 간의 상호작용을 설명하는 개념입니다. 이 용어는 주로 웹 보안과 관련이 있으며, 가장 일반적으로 크로스 사이트 스크립팅(Cross-Site Scripting, XSS)과 크로스 사이트 요청 위조(Cross-Site Reques.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 29. 17) 악용보호 - CSRF(Cross Site Request Forgery, 사이트 간 요청 위조) CSRF(Cross Site Request Forgery, 사이트 간 요청 위조) • 웹 애플리케이션의 보안 취약점으로 공격자가 사용자로 하여금 이미 인증된 다른 사이트에 대해 원치 않는 작업을 수행하게 만드는 기법을 말한다 • 이 공격은 사용자의 브라우저가 자동으로 보낼 수 있는 인증 정보, 예를 들어 쿠키나 기본 인증 세션을 이용하여 사용자가 의도하지 않은 요청을 서버로 전송하게 만든다 • 이는 사용자가 로그인한 상태에서 악의적인 웹사이트를 방문하거나 이메일 등을 통해 악의적인 링크를 클릭할 때 발생할 수 있다 CSRF 진행 순서 CSRF 기능 활성화@BeanSecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws E.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 28. 16) 악용보호 - CORS CORS(Cross Origin Resource Sharing, 교차 출처 리소스 공유) • 웹에서는 보안을 위해 기본적으로 한 웹 페이지(출처 A)에서 다른 웹 페이지(출처 B)의 데이터를 직접 불러오는 것을 제한하는데 이를 '동일 출처 정책(Same-Origin Policy)' 이라고 한다 • 만약 다른 출처의 리소스를 안전하게 사용하고자 할 경우 CORS 가 등장하며 CORS는 특별한 HTTP 헤더를 통해 한 웹 페이지가 다른 출처의 리소스에 접근할 수 있도록 '허가'를 구하는 방법이라 할 수 있다. 즉, 웹 애플리케이션이 다른 출처의 데이터를 사용하고자 할 때, 브라우저가 그 요청을 대신해서 해당 데이터를 사용해도 되는지 다른 출처에게 물어보는 것이라 할 수 있다 • 출처를 비교하는 로직은 .. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 25. 15) 예외처리 - exceptionHandling(), ExceptionTranslationFilter exceptionHandling() • 예외 처리는 필터 체인 내에서 발생하는 예외를 의미하며크게 인증예외(AuthenticationException) 와 인가예외(AccessDeniedException)로 나눌 수 있다 • 예외를 처리하는 필터로서 ExceptionTranslationFilter 가 사용 되며 사용자의 인증 및 인가 상태에 따라로그인 재시도, 401, 403 코드 등으로 응답할 수 있다 예외 처리 유형 AuthenticationException [ 인증 예외 ] 해당 예외가 발생하면 ExceptionTranslationFilter가 진행하는 과정 1. SecurityContext에서 인증 정보 삭제 기존의 Authentication 이 더 이상 유효하지 않다고 판단하고 Authe.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 24. 14) 세션관리 - SessionManagementFilter / ConcurrentSessionFilter SessionManagementFilter • 요청이 시작된 이후 사용자가 인증되었는지 감지하고, 인증된 경우에는 세션 고정 보호 메커니즘을 활성화하거나동시 다중 로그인을 확인하는 등 세션 관련 활동을 수행하기 위해 설정 된 세션 인증 전략(SessionAuthenticationStrategy)을 호출하는 필터 클래스이다 • 스프링 시큐리티 6 이상에서는 SessionManagementFilter 가 기본적으로 설정 되지 않으며세션관리 API 를 설정을 통해 생성할 수 있다 세션 구성 요소 ConcurrentSessionFilter [동시 세션 제어] • 각 요청에 대해 SessionRegistry에서 SessionInformation 을 검색하고 세션이 만료로 표시되었는지 확인하고 만료로 표.. 인프런/스프링 시큐리티 완전 정복 [6.x 개정판] 2024. 10. 23. 이전 1 2 3 4 ··· 27 다음