[Java - Spring Security6] Config파일 해석 및 직접 FilterChain만들기
·
Spring/Security6
우선 내 컨트롤러 다이어그램을 먼저 보여주자면! Controller Diagram 모든 컨트롤러는 REST API로 호출하는 방식이며 Spring Security 프레임워크가 적용되어있다. 모든 API호출 경로는 Security에서 인증 및 인가를 받아야 정상적인 응답을 받을 수 있다. Security는 Filter를 통해 코드가 구현되어 있다. 위 컨트롤러의 경로로 요청을 보낼 경우 나타나는 Security의 기본 창 아이디와 비밀번호를 자격 인증을 요구하고 있다. 위와 같이 이루어지는 Security 6에서 제공하는 기본 샘플을 먼저 살펴보자. 이 중 1번의 과정이 아래의 코드에 구현되어 있다. @Configuration(proxyBeanMethods = false) @ConditionalOnDefa..
[Java - Spring Security6] Spring Security를 사용하는 이유 및 아키텍처
·
Spring/Security6
보안이 왜 중요한가? 데이터 손실 또는 비즈니스 로직 손실을 초래할 수 있음 이러한 손실은 법적 처벌까지 따라갈 수 있다. 대부분의 공격에 대해 회피하고 정보를 보호하기 위함 환경 구성 Java 17, Spring Web, devtools, Spring Security Spring security 의존성을 추가하게되면 어떠한 요청에도 응답하지 않고 자격증명을 요구한다. 아무것도 설정하지 않은 Security 프로젝트 첫 인증후에는 곧바로 들어갈 수 있다. 재시작할때마다 새로운 빔리번호를 받고 가장 낮은 cvrt어플리케이션에서는 작동하지 않을 수 있다. 저장 시스템에 자격증명을 저장하고나 자격증명을 요구하는 것 properties 설정 비생산 애플리케이션, 내부 애플리케이션 , 작은 poc어플리케이션을 만..
자바[Java] - Security 소개
·
Spring/Security6
더보기 해당 글은 SpringBoot 기본 문서를 번역해서 적은 것입니다. 오타/오역이 있을 수 있습니다! Spring Security의 특징 인증, 권한 부여 및 일반적인 악용에 대한 보호를 위한 포괄적인 지원을 제공 사용을 단순화하기 위해 다른 라이브러리와 통합을 제공 Authentication( 인증) 특정 리소스에 액세스하려는 사람의 신원을 확인 사용자를 인증하는 일반적인 방법은 로그인 인증이 수행되면 우리는 신원을 알고 인증을 수행할 수 있다. Spring Security는 사용자 인증을 위한 기본 지원을 제공 Password Password Storage passwordEncoder인터페이스는 비밀번호를 안전하게 저장할 수 있도록 단방향 변환을 하는데 사용된다. 데이터베이스 인증에 사용되는 자..
JPA - 지연로딩과 즉시로딩
·
Spring/JPA
즉시 로딩과 지연 로딩 이전 포스트에서 프록시에 대해 배웠다. 해당 객체와 연관된 다른 객체를 어떤 시점에 불러올지 , 어떤 타입으로 형성되는지 알아봤다. JPA는 이런 프록시 기술을 사용해서 지연로딩을 사용한다. 객체 생성 코드 @Entity @Data @NoArgsConstructor(access = AccessLevel.PROTECTED)//기본생성자 protected @ToString(of = {"id","username","age"}) public class Member extends BaseEntity { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age;..
JPA - Proxy
·
Spring/JPA
프록시 객체란? 해당 엔티티와 연관된 다른 엔티티를 한 번에 조회하지 않고 실제로 필요할 때 프록시 객체를 초기화시켜 사용한다. 프록시 객체를 사용하면 자원 낭비를 막을 수 있다. 지연 로딩을 이해하기 위해 필요한 기초 개념 em.getReference()라는 메서드로 프록시 객체인지 확인 가능 em.find()는 실제 엔티티 객체를 조회하는 메서드 프록시의 특징 실제 클래스를 상속받아서 만들어진다. 하이버네이트가 내부적으로 상속받음 실제 클래스와 동일한 타입처럼 보인다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용한다. 프록시 객체는 실제 객체의 참조대상을 보관한다. 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. 프록시 객체의 초기화 Member객체를 e..
JPA - MappedSuperClass
·
Spring/JPA
@MappedSuperclass란? 객체의 입장에서 공통 매핑 정보가 필요할 때 사용 예를 들어 공통으로 작성일, 작성자, 수정일, 수정자를 공통으로 집어넣고 싶을때 사용한다. 공통 매핑 정보가 필요할 떄 부모 클래스에 선언하고 속성만 상속받아서 사용하고 싶을 때 사용한다. 객체에 적용하기 import lombok.Data; import javax.persistence.MappedSuperclass; import java.time.LocalDate; import java.time.LocalDateTime; @Data @MappedSuperclass public abstract class BaseEntity { /** * 작성자 및 작성일 */ private String createdBy; private ..