본문 바로가기

스프링

[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] Rest 인증 보안 및 화면 구성 문제 상황 Spring Security에서 REST API와 비동기 인증은 주로 JWT(JSON Web Token) 같은 토큰 기반 인증을 사용하여 세션을 유지하지 않는 방식으로 동작한다. 비동기 인증은 웹 페이지의 리프레시 없이 데이터를 송수신할 수 있는 환경, 즉 주로 AJAX 호출이나 REST API 호출에서 자주 사용된다.     Rest 인증 보안 세션 기반 인증에서 비동기 방식세션 기반 인증에서 비동기 방식으로 동작하는 인증은 주로 세션 쿠키를 통해 이루어진다. 웹 애플리케이션에서 로그인 후 서버가 클라이언트에게 세션 ID를 포함한 쿠키를 전달하고, 클라이언트는 이후 비동기 요청에서 이 쿠키를 계속해서 포함시켜 서버에 인증을 요청한다. 1. 세션 기반 인증 흐름로그인 요청: 클라이언트는 로그인.. 더보기
[스프링 시큐리티 완전 정복| 실전 프로젝트 | 회원 인증 시스템] 프로젝트 환경 설정 문제 상황 시큐리티 프로젝트를 따라 가면서 작동 원리를 이해 해보자  요구 사항  기본 보안 설정과 기본 사용자를 구성한다.    필요 개념  SecurityFilterChainSecurityFilterChain은 Spring Security에서 사용자가 정의한 보안 필터들이 순차적으로 적용되는 체인(chain)을 의미한다. 이 필터 체인은 클라이언트 요청을 처리하는 여러 보안 필터들의 묶음으로, 요청이 들어올 때 각 필터가 순서대로 실행되어 보안 처리를 담당한다. Spring Security에서 인증 및 인가(Authentication, Authorization)와 관련된 주요 작업들이 이 필터 체인을 통해 이루어진다.역할SecurityFilterChain은 각 HTTP 요청을 처리할 때 필터를 적용하.. 더보기
[Spring | SpringMVC 1편 - 백엔드 웹 개발 핵심 기술 | 웹 애플리케이션 이해] WAS, 서블릿, 멀티스레드 웹서버 웹서버는 주로 정적 컨텐츠를 처리하는 데 사용된다. 이는 HTML, CSS, JavaScript 파일과 같은 고정된 파일을 클라이언트, 즉 사용자의 웹 브라우저에 제공하는 역할을 한다. 사용자가 웹 브라우저를 통해 특정 웹 페이지에 접속 요청을 하면, 웹서버는 요청받은 파일을 찾아 사용자에게 전송한다. 대표적인 웹서버로는 Apache, Nginx, Microsoft IIS 등이 있다.웹 애플리케이션 서버(WAS) 웹 애플리케이션 서버는 동적 컨텐츠를 처리하기 위해 사용된다. 클라이언트의 요청에 따라 서버에서 실시간으로 처리를 해야 하는 경우에 쓰인다. 예를 들어, 데이터베이스 조회, 각종 로직 처리, 사용자 입력 처리 등 복잡한 동작을 수행하고 그 결과를 사용자에게 전송한다. 웹 애플리케이션 서버.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 빈 생명주기 콜백] 빈 생명주기 콜백 시작 public class NetworkClient { // 네트워크 클라이언트를 위한 클래스 선언 private String url; // 네트워크 연결을 위한 URL 주소를 저장하는 변수 public NetworkClient() { // 클래스의 생성자 System.out.println("생성자 호출, url = " + url); // 생성자 호출 시 URL 상태를 출력 connect(); // 네트워크 연결 메소드 호출 call("초기화 연결 메시지"); // 초기 메시지 전송을 위한 메소드 호출 } public void setUrl(String url) { // URL을 설정하는 메소드 this.url = url; // 인스턴스 .. 더보기
[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 도메인 분석 설계] 도메인 모델과 테이블 설계 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 의존관계 자동 주입] 조회 빈이 2개이상 - 문제 @Primary 사용`@Primary` 는 우선순위를 정하는 방법이다. @Autowired 시에 여러 빈이 매칭되면 `@Primary` 가 우선권을 가진다. @Primary, @Qualifier 활용코드에서 자주 사용하는 메인 데이터베이스의 커넥션을 획득하는 스프링 빈이 있고, 코드에서 특별한 기능으로 가끔 사용하는 서브 데이터베이스의 커넥션을 획득하는 스프링 빈이 있다고 생각해보자. 메인 데이터베이스의 커넥션을 획득하 는 스프링 빈은 `@Primary` 를 적용해서 조회하는 곳에서 `@Qualifier` 지정 없이 편리하게 조회하고, 서브 데이터베 이스 커넥션 빈을 획득할 때는 `@Qualifier` 를 지정해서 명시적으로 획득 하는 방식으로 사용하면 코드를 깔끔하게 유지할 수 있다. 물론 이때 메인 .. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 의존관계 자동 주입] 생성자 주입을 선택해라! @Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public O.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 컴포넌트 스캔] 필터, 중복등록과 충돌 package hello.core.scan.filter; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springfra.. 더보기