전체 글 87

Spring Security | WebSecurity, HttpSecurity 두가지 주요 클래스에 대하여.

Spring Security에서 사용되는, 두가지 주요 클래스인 WebSecurity와 HttpSecurity를 한번 알아보겠습니다. WebSecurity Spring Security의 보안 설정을 구성하기 위한 클래스입니다. 주로 인증과 관련된 설정을 처리하며, 사용자 인증정보를 어떻게 로드하고, 비밀번호 인코딩 방식을 설정하고, 사용자의 권한을 어떻게 확인할지 구성합니다. WebSecurityConfigurerAdapter를 확장하여 사용하며, configure(WebSecurity web)메소드를 오버라이드하여 필요한 보안 설정을 추가합니다. 주요 메소드 configure(AuthenticationManagerBuilder auth) 사용자 인증을 구성하는 메소드입니다. 사용자의 인증정보를 로드하고..

Spring 2024.03.13

Spring Security | AuthenticationEntryPoint 인터페이스 설명 및 BasicAuthenticationEntryPoint 구현체 설명

AuthenticationEntryPoint Spring Security에서 인증이 필요한 리소스에 접근 시 발생하는 인증 예외를 처리하는 인터페이스 입니다. 인증이 필요한 리소스에 접근하려는 클라이언트의 요청이 인증되지 않았을 때 호출되어 사용자를 로그인 페이지로 리다이렉트하거나, 인증 오류 메세지를 반환하는 등의 작업을 수행합니다. 주요 메소드 commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) 인증이 필요한 리소스에 접근하려는 클라이언트의 요청이 인증되지 않았을 때 호출 인증이 필요한 리소스에 접근하려는 클라이언트의 요청, 서블릿 요청 및 인증 예외를 받아 작업 ..

Spring 2024.03.13

Spring Security | 핵심 메소드와 기능 설명

ADMIN에서의 Spring Security를 이용한 권한 설정을 하면서, 참고한 메소드를 정리해보았습니다. antMatchers() HTTP 요청 경로에 대한 권한을 설정하는 메소드 .antMatchers("/public/**").permitAll() authorizeRequests() HTTP 요청에 대한 권한을 구성하는 메소드 .authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN") formLogin() 폼 기반 로그인을 활성화하는 메소드 .formLogin() httpBasic() HTTP Basic Authentication을 활성화하는 메소드 .httpBasic() logout() 로그아웃 구성을 위한 메소드 .logout() csrf()..

Spring 2024.03.11

Spring Security | Spring Security란?

Spring Security? Spring 기반의 Java 웹 애플리케이션에서 보안을 담당하는 프레임워크입니다. 주로 웹 애플리케이션에서 사용자 인증(Authentication) 및 권한 부여(Authorization)와 관련된 다양한 보안 기능을 제공합니다. Spring Security는 개발자들이 보안 관련 기능을 효율적이고 신속하게 구현할 수 있도록 도와줍니다. IoC/DI 패턴과 같은 확장 패턴을 염두해, 인증/인가 부분을 직접 개발하기 쉽지 않은데, Spring Security에서는 이와 같은 기능들을 제공해 개발 작업의 효율을 높일 수 있습니다. 주요 특징과 개념 인증(Authentication) Spring Security는 다양한 인증 방식을 지원하는데, 기본적으로 폼 기반 로그인, HTT..

Spring 2024.03.11

SpringBoot | ResponseEntity란?

회사에서 스프링 시큐리티를 컨트롤하다, 기존 Controller의 리턴값에서 불편함을 느껴 스터디를 진행해보았습니다. ResponseEntity란? Spring Framework에서 HTTP 응답을 나타내는 클래스입니다. 주로 MVC 컨트롤러에서 클라이언트에게 HTTP 응답을 반환할 때 사용됩니다. ResponseEntity는 응답의 HTTP 상태 코드, 헤더, 본문(Body) 등을 포함하는데 사용됩니다. HTTP 상태코드(Status Code) HTTP Headers 헤더는 키-값의 쌍으로 이루어져 있습니다. 캐시관련 헤더, 컨텐츠 헤더, 인코딩 등이 있습니다. 응답 본문(Body) 클라이언트로 전송될 응답의 본문을 나타냅니다. 주로 JSON, XML, HTML 등의 형식으로 데이터를 포함할 수 있습니..

Spring 2024.03.11

Utility Class(유틸리티 클래스)란?

Utility Class? 주로 특정한 목적을 위해 여러 메서드를 제공하는 클래스입니다. 이러한 클래스는 주로 정적(static) 메서드로만 구성되어 있으며, 인스턴스를 생성하지 않고도 직접 메서드를 호출할 수 있습니다. 특징 정적 메서드로만 구성되어 클래스의 인스턴스를 생성하지 않고도 직접 메서드를 호출할 수 있도록 합니다. 상태를 가지지 않고, 입력 값을 받아 결과를 반환하는 메서드들로 이루어집니다. 즉, 상태를 갖는 인스턴스 변수를 가지지 않습니다. 재사용 가능한 메서드들을 제공합니다. 유틸리티 클래스의 메서드들은 어떤 특정한 작업을 수행하는데 필요한 로직들을 캡슐화하고, 다양한 곳에서 재사용이 가능하도록 설계됩니다. 객체 생성이 필요 없습니다. 주로 객체 생성에 관련이 없거나 객체의 생성이 필요하..

개발지식공간 2024.03.11

Database | 인덱스(Index) 아키텍처(Architecture) - 클러스터(Cluster)

Architecture 클러스터(Cluster) 데이터베이스에서 다중 데이터베이스와 다중 테이블이 조인될 때 사용되는 개념입니다. 주로 클러스터 키(Cluster Key)를 기반으로 한 데이터 구조를 나타냅니다. 클러스터 키를 공유하는 테이블들의 레코드(행)은 동시에 또는 근처의 데이터베이스 블록에 함께 저장되어 클러스터를 형성합니다. 이를 통해 클러스터 키 값에 의해 정렬된 테이블의 레코드들이 물리적으로 함께 저장되므로 해당 키 값을 기반으로 하는 조인 작업을 향상시킬 수 있습니다. 클러스터의 주요 특징 클러스터 키(Cluster Key) 클러스터를 형성하는 테이블들이나 인덱스들이 사용하는 공통의 키입니다. 이 키를 기반으로 레코드들이 물리적으로 클러스터됩니다. 클러스터 키는 클러스터의 부분들 간에 레..

Database 2024.03.05

Java | 정적 팩토리 메서드(Static Factory Method)

정적 팩토리 메서드(Static Factory Method) 클래스의 인스턴스를 생성하고 반환하는 정적 메서드 입니다. 주로 생성자 대신 사용되며, 객체 생성 로직을 숨기고 객체 생성을 유연하게 다룰 수 있게 합니다. 이러한 정적 팩토리 메서드는 해당 클래스의 이름을 갖지 않아도 되며, 호출할 때마다 새로운 객체를 생성할 필요가 없을 때 특히 유용합니다. 메서드 생성 public class MyClass { // 생성자 대신 사용되는 정적 팩터리 메서드 public static MyClass createInstance() { // 객체 생성 로직 return new MyClass(); } } 위의 생성된 메서드를 활용하여 객체 생성 MyClass instance = MyClass.createInstanc..

Java 2024.03.04

Database | 인덱스(Index)를 생성 시 주의할점 및 생성전략

인덱스(Index)란? 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 데이터 구조입니다. 인덱스는 특정 열(컬럼)에 대한 정렬된 데이터를 가지며, 이를통해 빠른 검색, 정렬, 그룹화, 조인 등의 작업을 가능하게 합니다. 인덱스는 주로 SELECT 쿼리의 성능을 향상시키는데 사용되지만, 삽입, 수정, 삭제와 같은 쓰기 작업의 속도는 저하될 수 있습니다. 인덱스를 사용하게되면, 전체 데이터를 스캔하는 대신 인덱스를 검색하여 원하는 데이터를 빠르게 찾을 수 있습니다. 인덱스(Index)의 특징? 고유성(Uniqueness) 유일한 값을 가지도록 정의할 수 있습니다. 주로 기본키(primary Key)와 관련되어 있습니다. 클러스터드(Clustered) vs 비클러스터드(Non-clustered) 클러스..

Database 2024.03.04