Jinsu's Technical Blog
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 (250)
      • Java (18)
      • Spring Framework (33)
        • Toby's Spring 3.1 (6)
        • Spring IoC (6)
        • TDD (6)
        • Reflection (6)
        • AOP (6)
      • Spring Boot (11)
      • Spring Security (22)
      • Database (17)
        • Mysql (2)
        • JDBC (2)
        • JPA (13)
      • Build and Development Tools (3)
        • Maven (1)
        • Gradle (1)
        • Lombok (1)
      • Network (12)
      • Apache Tomcat (11)
      • Microservices Architecture (33)
      • Linux (9)
      • React (10)
      • Docker (22)
      • OAuth (10)
      • DevOps (2)
      • Git (2)
      • HTML (1)
      • CSS (1)
      • JavaScript (1)
      • Problem and Solution Guide (8)
        • Java (1)
        • Spring Framework (4)
        • Reflection (1)
        • Dynamic Proxy (1)
        • JPA (1)
      • Note-Taking (23)
  • 홈
  • 태그
  • 방명록
Spring Security

Authentication Resolver

✅ Authentication Resolver는 Spring Security에서 인증(Authentication) 객체를 해결(Resolve)하거나 생성하는 역할을 담당하는 개념입니다. 주로 Spring Security의 인증 흐름에서, 인증 정보를 어떤 방식으로 처리할지를 결정합니다. 일반적으로 Spring Security에 Authentication 객체를 전달하기 위해 Custom Resolver를 작성하거나 커스텀 로직을 구현할 때 사용됩니다.1. Authentication Resolver란?Authentication Resolver는 사용자의 인증 정보를 해석(Resolve) 하고, 적절한 Authentication 객체를 생성하거나 반환하는 컴포넌트입니다. HttpServletReques..

2024. 12. 18. 15:19
Spring Security

SecurityContext

Spring Security는 인증된 사용자 정보를 SecurityContext에 저장합니다. 이를 통해 애플리케이션 전반에서 현재 인증된 사용자의 정보를 조회하고 사용할 수 있습니다.SecurityContext란?SecurityContext는 Spring Security에서 인증된 사용자 정보를 저장하는 컨테이너입니다. SecurityContextHolder를 통해 현재 요청 스레드에서 접근할 수 있습니다. Authentication 객체를 저장하며, 인증된 사용자 정보 및 권한을 담고 있습니다.SecurityContext의 저장 과정사용자 인증 인증 필터(예: UsernamePasswordAuthenticationFilter)가 사용자의 ID/비밀번호를 검증합니다.Authentication 객체..

2024. 12. 18. 15:17
Spring Security

Authentication Filter, Authentication Manager, Authentication Provider

✅ Authentication Filter, Authentication Manager, Authentication Provider는 Spring Security의 핵심 컴포넌트로서 인증(Authentication) 과정을 처리하는 역할을 합니다. 각각의 개념과 역할을 자세히 설명해 드리겠습니다.1. Authentication Filter (인증 필터)정의Authentication Filter는 사용자의 요청에서 인증 정보를 추출하고 인증을 시도하는 Filter입니다. 주로 HTTP 요청의 Authorization 헤더, 폼 데이터, 쿠키 등에서 인증 정보를 가져옵니다. 역할클라이언트 요청에서 인증 정보(예: 사용자명/비밀번호, 토큰)를 추출합니다. AuthenticationManager에 인증 처리..

2024. 12. 18. 15:14
Spring Security

RFC6265

RFC6265는 HTTP 쿠키에 대한 표준 규격을 정의한 문서로, 쿠키의 생성, 저장, 삭제, 보안 설정 등에 대한 규칙을 제공합니다. HTTP 쿠키는 웹 애플리케이션에서 사용자의 세션 유지, 로그인 상태 관리, 사용자 맞춤형 경험 제공 등을 위해 활용됩니다. RFC6265는 특히 보안 강화를 위해 쿠키의 SameSite 속성을 도입하고, 다양한 보안 지침을 명시합니다. RFC6265의 주요 개념과 규칙 1. 쿠키의 기본 구조 RFC6265에 따르면 쿠키는 이름-값 쌍으로 저장되며, 다음과 같은 구성 요소를 가집니다:  • Name (이름): 쿠키의 이름을 설정합니다. • Value (값): 쿠키에 저장할 값을 설정합니다. • Domain (도메인): 쿠키를 사용할 수 있는 도메인을 지정합니다. 특정 도..

2024. 10. 31. 16:44
Spring Security

SameSite

SameSite는 쿠키의 보안 속성으로, 쿠키가 외부 사이트의 요청과 함께 브라우저로 전송되는 방식을 제어합니다. 이를 통해 CSRF(Cross-Site Request Forgery) 공격을 방지하는 데 도움을 줍니다. SameSite 속성에는 세 가지 옵션이 있으며, 각각의 옵션이 쿠키 전송을 제한하는 방식이 다릅니다. SameSite의 세 가지 옵션  1. SameSite=Strict 2. SameSite=Lax 3. SameSite=None 1. SameSite=Strict  • 동작: 엄격한 모드로, 쿠키가 외부 사이트에서 전송된 요청에는 절대 포함되지 않습니다. • 사용 예: 사용자가 직접 입력한 도메인에서만 쿠키가 전송되며, 링크나 외부 사이트에서 리디렉션되는 요청에는 쿠키가 포함되지 않습니다..

2024. 10. 31. 16:42
Spring Security

CORS(Cross-Origin Resource Sharing)의 Simple Request와 Non-Simple Request

CORS(Cross-Origin Resource Sharing)는 웹 페이지가 다른 도메인의 리소스에 접근할 때 보안을 위해 특정 규칙을 적용하는 방식입니다. 이때 요청은 Simple Request(단순 요청)과 Non-Simple Request(비단순 요청)으로 나뉩니다. 1. Simple Request (단순 요청) 단순 요청은 브라우저에서 서버에 사전 요청(preflight) 없이 바로 요청을 보낼 수 있는 CORS 요청 유형입니다. 사전 요청이 없기 때문에 네트워크 자원이 절약되고, 단순한 API 호출이나 기본 리소스 접근에 사용됩니다. Simple Request의 조건  1. 허용된 HTTP 메서드: • GET • POST • HEAD 2. 허용된 요청 헤더: • 추가적인 사용자 정의 헤더를 사..

2024. 10. 31. 16:27
Spring Security

Spring Security 인증 아키텍처

Spring Security 인증 아키텍처 이 글에서는 Spring Security의 인증 아키텍처를 다룰 것입니다. 아래 이미지는 Spring Security가 HTTP 요청을 인증하는 전체 과정을 보여줍니다. 각 컴포넌트가 어떤 역할을 수행하며 어떻게 상호작용하는지 단계별로 설명합니다.  인증 프로세스의 주요 구성 요소  1. Http Request (사용자 요청) • 사용자가 애플리케이션에 접근할 때 보낸 HTTP 요청입니다. 이 요청은 사용자 자격 증명(주로 사용자 이름과 비밀번호)을 포함할 수 있습니다. 2. AuthenticationFilter • AuthenticationFilter는 Spring Security의 필터 체인 중 하나로, HTTP 요청을 가로채고 자격 증명을 추출하여 인증을 ..

2024. 10. 31. 10:33
Spring Security

FilterOrderRegistration 클래스 구조와 역할

이 클래스의 주요 역할은 Spring Security 필터들이 올바른 순서로 실행되도록 각 필터의 순서를 지정하는 것입니다.@SuppressWarnings("serial")final class FilterOrderRegistration { private static final int INITIAL_ORDER = 100; private static final int ORDER_STEP = 100; private final Map filterToOrder = new HashMap(); FilterOrderRegistration() {Step order = new Step(INITIAL_ORDER, ORDER_STEP);put(DisableEncodeUrlFilter.class, order.next());pu..

2024. 10. 31. 10:14
Spring Security

requestMatcher

requestMatcher는 Spring Security에서 특정 요청 경로에 대해 조건을 정의하는 기능입니다. 보안 필터에서 특정 URL이나 HTTP 메소드에 맞는 요청이 들어왔을 때만 필터가 작동하게 설정할 수 있습니다. requestMatcher는 주로 보안 설정을 세분화하거나 CSRF 정책 등을 특정 조건에 맞추어 설정할 때 사용됩니다. 사용 방법 일반적으로 HttpSecurity에서 requestMatchers() 메서드를 사용해 특정 URL 경로나 조건을 설정합니다. antMatchers, mvcMatchers 등의 메서드도 같은 역할을 하지만, requestMatchers는 훨씬 더 다양한 조건을 지원합니다.http .authorizeRequests() .requestMatcher..

2024. 10. 30. 14:59
Spring Security

hasAuthority와 그 외의 다양한 표현식

Spring Security에서 hasAuthority와 그 외의 다양한 표현식들은 권한 기반의 액세스 제어를 위한 유용한 도구입니다. 이 표현식들은 애플리케이션의 보안을 강화하며 사용자가 특정 리소스에 접근할 수 있는지 여부를 결정하는 데 중요한 역할을 합니다. 1. hasAuthority hasAuthority는 사용자가 특정한 단일 권한을 가지고 있는지 여부를 확인하는 표현식입니다. 이는 사용자가 필요한 권한을 소유하고 있을 때만 접근을 허용하는 데 유용합니다. 예시:http .authorizeRequests() .antMatchers("/admin").access("hasAuthority('ROLE_ADMIN')") .anyRequest().authenticated(); 위의 예시..

2024. 10. 30. 12:33
Spring Security

CSRF(Cross-Site Request Forgery)

CSRF(Cross-Site Request Forgery)은 웹 애플리케이션의 취약점을 악용하여 사용자가 의도하지 않은 행동을 하도록 유도하는 공격입니다. 공격자가 사용자의 권한을 훔쳐 요청을 보내기 때문에 특히 인증된 사용자 세션이 있는 경우 심각한 피해를 입을 수 있습니다. CSRF는 서버가 사용자가 요청을 직접 보냈는지 확인하지 않는 경우에 발생할 수 있습니다. CSRF 작동 원리  1. 사용자 인증: 사용자가 사이트에 로그인하면 서버는 세션 ID나 인증 토큰을 발급하여 브라우저에 저장합니다. 이 세션 ID나 토큰을 통해 사용자는 로그인된 상태로 서버에 요청을 보낼 수 있습니다. 2. 악성 사이트 방문: 공격자는 사용자가 로그인된 상태에서 특정 악성 사이트를 방문하거나, 이메일/메시지를 통해 악성 ..

2024. 10. 30. 12:18
Spring Security

@Async

@Async는 Spring에서 제공하는 비동기 처리를 지원하는 애노테이션으로, 특정 메서드가 호출될 때 별도의 스레드에서 비동기적으로 실행되도록 합니다. 이를 통해 응답 시간 단축, 병렬 처리, 서버 성능 최적화와 같은 이점을 얻을 수 있습니다. 1. @Async란? Spring의 @Async는 메서드의 작업을 메인 스레드와 독립적으로 실행하게 함으로써, 메서드가 실행되는 동안 다른 작업을 수행할 수 있도록 합니다. 비동기 처리가 필요한 경우에 사용하며, Executor나 스레드 풀과 함께 사용하여 효율적인 비동기 환경을 구성할 수 있습니다. 사용 예시 아래는 @Async를 사용하여 메서드를 비동기적으로 호출하는 예시입니다.import org.springframework.scheduling.annotat..

2024. 10. 29. 23:57
Spring Security

DelegatingSecurityContextCallable

DelegatingSecurityContextCallable은 비동기 작업을 수행할 때 **Spring Security의 SecurityContext**를 자식 스레드로 전파하는 데 사용하는 클래스입니다. 보통 SecurityContext는 요청마다 고유하며, 기본적으로는 메인 스레드에서만 유지됩니다. DelegatingSecurityContextCallable을 사용하면 자식 스레드에서도 인증 정보가 동일하게 유지되어, 인증된 사용자 정보가 일관되게 사용됩니다. Spring Security와 함께 비동기 작업을 구성할 때 매우 유용한 클래스입니다. 1. DelegatingSecurityContextCallable이란? Spring Security에서 SecurityContext는 사용자의 인증 정보와 ..

2024. 10. 29. 23:53
Spring Security

Callable과 Runnable

Callable과 Runnable은 Java에서 멀티스레딩을 구현할 때 사용하는 두 가지 인터페이스로, 각각의 차이점과 활용법이 있습니다. 특히, 비동기 작업과 병렬 처리가 필요한 상황에서 이 두 인터페이스를 통해 간단하고 효율적인 스레드 작업을 구현할 수 있습니다. 아래에 Callable과 Runnable을 자세히 설명하겠습니다. 1. Runnable Runnable은 Java 1.0부터 제공된 인터페이스로, 스레드에서 수행할 작업을 정의합니다. Runnable 인터페이스는 리턴값이 없으며 단순히 스레드를 실행할 때 필요한 로직을 정의할 수 있습니다. Runnable 기본 구조 Runnable 인터페이스는 단 하나의 메서드, run()을 가집니다.@FunctionalInterfacepublic inte..

2024. 10. 29. 23:46
Spring Security

Tomcat Executor

Spring Security와 Apache Tomcat의 Executor는 많은 요청을 효율적으로 처리하고, 인증/인가 과정에서 스레드의 안전성과 성능을 높이기 위해 함께 사용할 수 있습니다. 아래는 Executor를 Spring Security와 연관해 자세히 설명한 내용입니다. Spring Security와 Apache Tomcat Executor Spring Security는 애플리케이션에서 인증과 인가를 관리하며, Apache Tomcat은 애플리케이션 서버로써 HTTP 요청을 처리합니다. 여기서 Executor는 Tomcat의 스레드 풀을 관리하여 각 요청을 효율적으로 처리할 수 있도록 도와줍니다. Spring Security는 요청마다 SecurityContext를 통해 인증 정보를 관리하는데..

2024. 10. 29. 23:33
  • «
  • 1
  • 2
  • »

공지사항

  • Jinsu's GitHub

전체 카테고리

  • 분류 전체보기 (250)
    • Java (18)
    • Spring Framework (33)
      • Toby's Spring 3.1 (6)
      • Spring IoC (6)
      • TDD (6)
      • Reflection (6)
      • AOP (6)
    • Spring Boot (11)
    • Spring Security (22)
    • Database (17)
      • Mysql (2)
      • JDBC (2)
      • JPA (13)
    • Build and Development Tools (3)
      • Maven (1)
      • Gradle (1)
      • Lombok (1)
    • Network (12)
    • Apache Tomcat (11)
    • Microservices Architecture (33)
    • Linux (9)
    • React (10)
    • Docker (22)
    • OAuth (10)
    • DevOps (2)
    • Git (2)
    • HTML (1)
    • CSS (1)
    • JavaScript (1)
    • Problem and Solution Guide (8)
      • Java (1)
      • Spring Framework (4)
      • Reflection (1)
      • Dynamic Proxy (1)
      • JPA (1)
    • Note-Taking (23)

블로그 인기글

전체 방문자

오늘
어제
전체
Powered by Privatenote Copyright © Jinsu's Technical Blog All rights reserved. TistoryWhaleSkin3.4

티스토리툴바