일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Class
- UserDetails
- SpringBoot Initializr
- redis
- datatype
- Fluent-bit
- Java
- Sprint Security
- If
- C++
- ansible
- Algorithm
- datastructure
- JavaScript
- zgc
- quicksort
- While
- For
- 자료형
- JPA
- 연산자
- lambda
- jvm
- programmers
- Spring Security
- 기초
- g1gc
- MergeSort
- IAC
- Kotlin
- Today
- Total
목록SpringFramework (8)
뭐라도 끄적이는 BLOG
Servlet Filtes Spring Security는 Servlet Filter를 기반으로 Servlet을 지원하므로, Filter의 역할을 살펴보는 것이 이해에 도움이 된다. 다음 이미지는 단일 HTTP 요청을 처리하는 일반적인 레이어를 보여준다. 클라이언트가 어플리케이션에 요청을 보내면 컨테이너는 요청 URI Path를 기반으로 HttpServletRequest를 처리해야 하는 Filter로 구성된 FilterChain을 생성한다. Spring MVC 어플리케이션에서 Servlet은 DispatcherServlet 인스턴스이다. 단일 HttpServletRequest 및 HttpServletResponse처리는 최소 하나의 Servlet이 담당한다. 하지만 둘 이상의 Filter를 사용할 수 있다..
이번에는 사용자가 직접 UserDetailsService를 구현하는 class를 생성하고 Bean으로 등록한다. 그리고 직접 User정보를 데이터베이스에서 가지고와서 인증에 사용되어질 수 있도록 User를 상속한 MyUser를 만들어 반환하는 작업을 진행해 본다. 추가로 인증 성공시와 실패시 이벤트 설정을 어떻게 하는지에 대해서도 살펴본다. Inmemory UserDetailsService public class MyUserDetailsService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { if (username..
Multiple SecurityChain 이전에 하나로 작성한 SecurityFilterChain을 연달아서 정의할 수도 있다. 각각의 filter의 이름은 달라야하며 @Order라는 Annotation으로 Filter등록 순서를 정할 수 있다. 낮은 순서가 우선시 된다. @Configuration @EnableWebSecurity public class SecurityConfiguration { @Bean @Order(100) SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .securityMatcher("/user") .authorizeHttpRequests(authorize -> { authorize..
OAuth Google, Facebook과 같은 다양한 플랫폼의 특정 사용자 데이터에 접근하기 위해 제3자 클라이언트가 사용자의 접근 권한을 위임받을 수 있는 표준 프로토콜이다. 우리 서비스가 다른 클라이언트에게 접근 권한을 위임해 줄 수도 있다. Spring OAuth Client Spring Security에서 기본적으로 Google, Github, Facebook 3가지 OAuth사용방법을 만들어 놓았다. 이외 OAuth Client는 사용자가 Custom으로 생성해 주어야 한다. 이번에는 기본적으로 제공해 주는 Google, Github, Facebook만 사용해 본다. implementation 'org.springframework.boot:spring-boot-starter-oauth2-cli..
Embedded H2 Database H2 Database는 자바기반의 오픈소스 RDBMS이다. H2 Database는 설치를 해서 사용할 수도 있지만 Database설치 없이 Application에 Database가 내장된 형태로 프로그램을 테스트 해볼 수 있다. 프로그램이 종료되면 데이터가 사라지기 때문에 간단한 테스트 용도에서만 사용한다. implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' H2 Database를 사용하기 위해서 위 2가지 의존성을 추가했다. spring: h2: console: enabled: true path: /h2-console datasource: g..
Security Configuration Spring Boot 3.0.0 이후 설정되는 Spring Security는 이전에 Configuration을 적용했던 방식과는 조금 달라졌다. 이전에는 WebSecurityConfigurerAdapter가 @Configuration이 설정된 Class에 상속됬어야 했는데 지금은 @EnableWebSecurity를 추가해주면 된다. Spring Security without the WebSecurityConfigurerAdapter In Spring Security 5.7.0-M2 we deprecated the WebSecurityConfigurerAdapter, as we encourage users to move towards a component-based..
Spring Security란 Spring Security는 인증, 권한 부여, 일반적인 공격에 대한 보호 기능을 제공하는 프레임워크이다. Servlet Application과 Reactive Application 모두 보안을 최고 수준으로 지원하며, Spring 기반 애플리케이션 보안을 위한 사실상의 표준이다. Setup start.spring.io에서 아래와 같이 Spring Security 프로젝트를 간단히 생성해본다. 이후 해당 프로젝트를 지속적으로 변경하면서 Spring Security에 대한 설명을 이어나갈 것이다. 해당 Spring Security 시리즈는 Spring Boot 3.0.0이후에 적용되는 Spring Security를 기준으로 작성한다. 간단하게 Web과 Security Dep..
이제 대부분 Spring Framework 프로젝트를 시작하기 위해 Spring Boot 프로젝트를 생성한다. 이러한 Spring Boot 프로젝트를 생성하는 방법과 프로젝트가 어떻게 구성되어 있는지 살펴본다. Spring Initializr Spring Initializr에서 Spring Boot 프로젝트를 생성할 수 있다. 먼저 Project Build Tool을 선택할 수 있다. Maven또는 Gradle은 프로젝트의 의존성 관리를 하기 위한 시스템이며 MavenRepository에서 개발자가 필요로하는 라이브러리를 가져와 사용할 수 있도록 도와주는 도구이다. Maven은 Ant와 더불어 인기가 식어가고 있으며 새로운 프로젝트에는 Gradle이 많이 사용되고 있다. Language는 Java와 Ko..