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

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
Database/JDBC

Spring의 JdbcTemplate에서 콜백 메서드

Spring의 JdbcTemplate에서 콜백 메서드로 사용되는 주요 인터페이스와 메서드는 SQL 쿼리를 수행할 때 각 단계의 동작을 커스터마이징하기 위해 제공됩니다. 대표적인 콜백 메서드로는 RowMapper, ResultSetExtractor, PreparedStatementCreator, PreparedStatementSetter 등이 있습니다. 아래는 JdbcTemplate에서 자주 사용하는 콜백 인터페이스와 메서드 목록입니다. 1. RowMapper  • 설명: 각 행을 객체로 매핑하여 반환합니다. 쿼리 결과를 객체로 변환하는 데 사용되며, 일반적으로 query() 메서드에서 사용됩니다. • 사용 메서드: RowMapper mapRow(ResultSet rs, int rowNum) 사용 예시jd..

2024. 10. 29. 23:50
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 Framework

InitializingBean

InitializingBean 인터페이스는 Spring 프레임워크에서 빈(Bean)이 초기화되는 시점에 추가 작업을 수행할 수 있도록 하는 인터페이스입니다. Spring의 빈 생명주기와 관련이 깊으며, 주로 리소스를 초기화하거나, 기본 설정을 적용하는 등의 용도로 사용됩니다. 1. InitializingBean이란? InitializingBean은 Spring 빈이 생성된 후, 빈이 모든 의존성을 주입받은 초기화 단계에서 호출될 수 있도록 하는 인터페이스입니다. InitializingBean을 구현하는 클래스는 afterPropertiesSet() 메서드를 필수로 구현해야 하며, 이 메서드 안에서 빈 초기화 시 수행할 작업을 정의할 수 있습니다. 주요 사용 목적  • 초기화 로직 구현: 빈이 생성되고 의..

2024. 10. 29. 23:39
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
Network

Load Balancer

1. 로드 밸런서(Load Balancer)란? 로드 밸런서는 네트워크 트래픽을 여러 서버로 분산하여 시스템의 성능과 안정성을 높여주는 장치 또는 소프트웨어입니다. 단일 서버에 집중되는 과부하를 방지하고, 서버 자원을 효율적으로 사용하도록 돕습니다. 로드 밸런서는 다양한 방식으로 트래픽을 분산할 수 있으며, 고가용성과 확장성 향상에 중요한 역할을 합니다. 로드 밸런서의 필요성  • 성능 최적화: 많은 트래픽이 발생하는 경우 단일 서버가 이를 감당하기 어려워집니다. 로드 밸런서를 통해 여러 서버로 트래픽을 분산하면 성능이 향상됩니다. • 고가용성: 특정 서버가 다운되더라도 다른 서버가 서비스할 수 있도록 하여 서비스 중단을 방지합니다. • 확장성: 로드 밸런서 설정을 통해 쉽게 서버를 추가할 수 있어, 트..

2024. 10. 29. 23:26
Spring Security

SecurityContext, SecurityContextHolder, 스레드 처리 방식

**SecurityContext**와 **SecurityContextHolder**는 Spring Security의 인증 및 권한 관리에서 중요한 두 가지 개념입니다. 이들은 Spring Security에서 사용자 인증 정보를 유지하고 관리하는 역할을 하며, 애플리케이션의 요청 처리 과정에서 인증된 사용자의 정보를 필요로 하는 곳에 제공합니다.  1. SecurityContext **SecurityContext**는 Spring Security에서 현재 인증된 사용자 정보를 저장하고 관리하는 인터페이스입니다. 인증된 사용자의 정보를 저장하여 애플리케이션의 어느 부분에서든 인증 상태를 참조할 수 있게 합니다. 주요 역할  • 현재 인증된 사용자 정보 유지: 사용자가 인증을 완료하면 SecurityConte..

2024. 10. 29. 10:32
Spring Security

UserDetailsService, PasswordEncoder, AuthenticationProvider

1. UserDetailsService **UserDetailsService**는 Spring Security에서 사용자의 인증을 위한 사용자 정보를 가져오는 데 사용되는 인터페이스입니다. 이 인터페이스는 사용자의 사용자명(username)을 통해 사용자 정보를 조회하고, 그 정보를 바탕으로 인증을 처리합니다. 주요 메서드  • loadUserByUsername(String username): 이 메서드는 사용자명을 입력받아 해당 사용자의 인증 정보를 담고 있는 UserDetails 객체를 반환합니다. UserDetailsService 구현 예시 보통 데이터베이스와 연결하여 사용자의 인증 정보를 가져오는데, 일반적인 구현 예시를 살펴보겠습니다.import org.springframework.securit..

2024. 10. 29. 09:13
Spring Security

JSON Web Token

**JSON Web Token (JWT)**은 주로 클라이언트와 서버 간에 사용자 인증과 정보 전달을 위해 사용하는 JSON 기반의 토큰입니다. JWT는 특히 웹 애플리케이션에서 많이 사용되며, 사용자 로그인 후 발급된 토큰을 통해 사용자가 이후 요청에서도 지속적으로 인증을 유지할 수 있도록 해줍니다. JWT의 구성 요소 JWT는 크게 헤더(Header), 페이로드(Payload), **서명(Signature)**의 세 부분으로 나누어집니다.  1. 헤더(Header): • 헤더는 토큰의 유형과 서명 알고리즘을 지정하는 정보를 포함합니다. 일반적으로 alg는 서명 알고리즘을 나타내고, typ는 JWT임을 나타냅니다. • 예시:{ "alg": "HS256", "typ": "JWT"} 2. 페이로드(Pa..

2024. 10. 28. 17:22
Spring Security

SHA-256

SHA-256은 Secure Hash Algorithm 256-bit의 줄임말로, 데이터를 암호화하는 해시 함수입니다. 주로 데이터의 무결성을 검증하거나 암호학적 목적으로 사용됩니다. SHA-256은 SHA-2(Secure Hash Algorithm 2) 패밀리의 일종으로, 2001년에 미국 국립표준기술연구소(NIST)에 의해 공개된 후 안전성과 성능 면에서 널리 인정받아 현재까지도 사용되고 있습니다. SHA-256의 주요 특징  1. 고정 길이 출력: 입력 데이터의 길이에 관계없이 항상 256비트(32바이트) 고정된 길이의 해시 값을 생성합니다. 2. 단방향 특성: 원본 데이터를 알 수 없도록 해시 값을 통해 역산할 수 없기 때문에 보안이 높은 단방향 특성을 가지고 있습니다. 3. 충돌 저항성: 서로 ..

2024. 10. 28. 17:13
Note-Taking

Spring Data JPA 정리

목차1. Getting Started: Spring Data JPA 프로젝트를 설정하고 시작하는 기초적인 단계로, 의존성 추가와 기본 설정 등을 포함합니다.2. Core Concepts: JPA의 주요 개념인 엔티티, 영속성 컨텍스트, 트랜잭션 등 데이터 영속성과 관련된 핵심 개념을 다룹니다.3. Defining Repository Interfaces: 데이터베이스 작업을 위한 인터페이스인 JpaRepository나 CrudRepository 인터페이스를 정의하고 사용하는 방법을 다룹니다.4. Configuration: Spring Data JPA의 설정 방법을 설명하며, application.properties 파일을 통한 설정과 관련된 내용입니다.5. Persisting Entities: 엔티티를 데..

2024. 10. 28. 14:40
  • «
  • 1
  • ···
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • ···
  • 17
  • »

공지사항

  • 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

티스토리툴바