분류 전체보기 2639

[12장] OAuth 2가 작동하는 방법

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 1. OAuth 2 프레임워크OAuth 2를 권한 부여 프레임워크라고 부르는 경우가 많으며, 타사 웹사이트나 웹이 리소스에 접근할 수 있게 허용하는 것이 주목적OAuth 2는 특정 구현이나 라이브러리가 아니라는 점이 중요여태까지 다룬 HTTP Basic 인증 방식에는 두 가지 고려할 문제가 있음모든 요청에 자격 증명을 보내야 함사용자의 자격 증명을 별도의 시스템이 관리해야 함 모든 요청에 대한 자격 증명을 보내는 방식은 일반적으로 다음을 의미하기 때문에 바람직하지 않음네트워크를 통해 자격 증명이 자주 공유됨클라이언트가..

[10장] CSRF 보호와 CORS 적용

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 1. 애플리케이션에 CSRF (사이트 간 요청 위조) 보호 적용스프링 시큐리티에 기본적으로 CSRF 보호가 활성화되어 있음CSRF는 광범위한 공격 유형이며 CSRF에 취약한 애플리케이션은 인증 후 사용자가 웹 애플리케이션에서 원치 않는 작업을 실행하게 할 수 있음CSRF에 취약한 애플리케이션을 개발해서 사용자가 원치 않는 작업이 실행되는 상황은 누구도 원하지 않을 것 1.1 스프링 시큐리티의 CSRF 보호가 작동하는 방식CSRF 공격은 사용자가 웹 애플리케이션에 로그인했다고 가정하며 사용자는 공격자에게 속아서 작업 중..

[9장] 필터 구현

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 서론스프링 시큐리티의 HTTP 필터는 일반적으로 요청에 적용해야 하는 각 책임을 관리하며 책임의 체인을 형성함필터는 요청을 수신하고 그 논리를 실행하며 최종적으로 체임의 다음 필터에 요청을 위임함 스프링 시큐리티는 맞춤 구성을 통해 필터 체인에 추가할 수 있는 필터 구현을 제공하지만 맞춤형 필터도 정의할 수 있음 1. 스프링 시큐리티 아키텍처의 필터 구현인증 필터는 요청을 가로채고 인증 책임을 AuthenticationManager에 위임함인증 이전에 특정 논리를 실행하려면 인증 필터 앞에 필터를 추가하면 됨스프링..

[8장] 권한 부여 구성: 제한 적용

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 1. Matcher 메서드로 엔드포인트 선택요청에 권한을 부여할 때 관리자 역할이 있는 사용자만 엔드포인트를 호출할 수 있도록 mvcMatchers() 메서드를 이용할 수 있음Matcher 메서드로 요청을 참조할 때는 특정한 규칙부터 일반적인 규칙의 순서로 지정해야 하므로 anyRequest() 메서드를 mvcMatchers() 같은 더 특정적인 Matcher 메서드보다 먼저 호출할 수 없음 2. MVC Matcher 메서드로 권한을 부여할 요청 선택권한 부여 구성을 적용할 요청을 지정하는 일반적인 방법은 MVC 식..

[7장] 권한 부여 구성: 액세스 제한

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 1. Authorization권한 부여 (Authorization)는 식별된 클라이언트가 요청된 리소스에 접근할 권한이 있는지 시스템이 결정하는 프로세스스프링 시큐리티에서 애플리케이션은 인증 흐름을 완료한 뒤 요청을 권한 부여 필터에 위임함필터는 구성된 권한 부여 규칙에 따라 요청을 허용하거나 거부함 2. 권한과 역할에 따라 접근 제한사용자는 가진 권한에 따라 특정 작업만 실행할 수 있음권한은 사용자가 시스템 리소스로 수행할 수 있는 작업이며 권한의 이름은 객체의 getAuthority()가 String 형식으로 반..

[Hibernate/JPA] 식별자 생성 최적화 전략

1. 데이터베이스 Primary Key의 종류와 설계 원칙자연 키 (Natural Key): 주민등록번호, ISBN, 차량 식별 번호 등 자연스럽게 정의된 고유값장점: 비즈니스적으로 의미가 있어 직관적단점: 일반적으로 길이가 길어 인덱스·외래키·저장 공간이 비효율적이고, 변경 가능성도 존재 대체 키 (Surrogate Key): 시스템적으로 부여하는 IDENTITY, SEQUENCE, UUID 등장점: 크기가 작고(숫자), 인덱스·외래키·조인·클러스터드 인덱스 등에서 성능상 유리UUID는 128 비트라 역시 공간 비효율, 일반적으로는 숫자형 auto-increment/sequence가 선호됨 공간 효율성: PK가 클수록 모든 보조 인덱스와 외래키에도 그 크기만큼 부담PK가 작을수록 데이터베이스 IO, 인..

DB/JPA 2025.05.30

[Hibernate/JPA] 타입

1. JPA/Hibernate의 타입 매핑 구조JPA와 Hibernate는 Java 객체를 관계형 데이터베이스에 영속화할 때 다양한 타입 매핑 방식을 제공하며 대표적으로 다음 세 가지 범주가 있음기본 타입(Basic Types): Integer, Long, String, Float, Enum 등과 같이 데이터베이스의 단일 컬럼에 매핑되는 타입임베디드 타입(Embeddable Types): 여러 컬럼을 하나의 Java 컴포넌트로 그룹화해 매핑할 수 있음 i.g. 주소( Address)와 같은 객체가 여러 컬럼을 가질 때 사용엔티티 타입(Entity Types): 데이터베이스의 테이블과 직접적으로 매핑되는, 각각의 식별자 (Primary Key)를 가지는 객체 2. 컬럼 타입의 컴팩트함이 중요한 이유데이터베..

DB/JPA 2025.05.29

[Hibernate/JPA] Connection

1. JPA와 커넥션 관리의 기본 구조Java Persistence API(JPA)는 Java EE 환경에서 데이터베이스 연결을 어떻게 관리할지에 대한 표준 제시초기 JPA 1.0은 엔터프라이즈 애플리케이션 서버와 밀접하게 결합되어, 데이터베이스 커넥션을 애플리케이션 서버가 통제·관리하도록 설계되었으며 주요 포인트는 다음과 같음Java EE 환경: 데이터 소스는 JNDI(Java Naming and Directory Interface)를 통해 애플리케이션에 주입되며 커넥션 풀링, 모니터링, JTA(분산 트랜잭션 관리) 등은 모두 서버가 책임짐persistence.xml 설정: 개발자는 JNDI 이름을 통해 RESOURCE_LOCAL(로컬 트랜잭션) 또는 JTA(분산 트랜잭션) 데이터 소스를 지정해야 하며..

DB/JPA 2025.05.29

[5장] 인증 구현

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 개요인증 논리를 담당하는 것은 AuthenticationProvider 계층이며 여기에서 요청을 허용할지 결정하는 조건과 명령을 발견할 수 있음AuthenticationManager는 HTTP 필터 계층에서 요청을 수신하고 해당 책임을 AuthenticationProvider에 위임하는 구성 요소요청을 나타내는 방법을 명확히 이해하려면 Authentication 인터페이스부터 알아야 함그런 다음 인증이 성공한 후 요청 세부 사항이 처리하는 방법을 배울 수 있으며 SecurityContext 인터페이스와 스프링 시큐리티..

[4장] 암호 처리

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 1. PasswordEncoder 계약의 이해 일반적으로 시스템은 암호를 일반 텍스트로 관리하지 않고 공격자가 암호를 읽고 훔치기 어렵게 하기 위한 일종의 변환 과정을 거침스프링 시큐리티에는 이 책임을 위해 정의된 별도의 계약이 있음 PasswordEncoder 계약의 정의PasswordEncoder는 인증 프로세스에서 암호가 유효한지를 확인함모든 시스템은 어떤 방식으로든 인코딩 된 암호를 저장하며 아무도 암호를 읽을 수 없도록 해싱 후 저장하는 것을 권장PasswordEncoder도 암호를 인코딩할 수 있으며 계약..