목록분류 전체보기 (181)
개발자의 오르막
# 스프링 시큐리티가 제공하는 필터들 - WebAsyncManagerIntergrationFilter - SecurityContextPersistenceFilter - HeaderWriterFilter - CsrfFilter - LogoutFilter - UsernamePasswordAuthenticationFilter - DefaultLoginPageGeneratingFilter - DefaultLogoutPageGeneratingFilter - BasicAuthenticationFilter - RequestCacheAwareFilter - SecurityContextHolderAwareRequestFilter - AnonymousAuthenticationFilter - SessionManagement..
# AuthenticationManager 가 인증을 마친 뒤 리턴 받은 Authentication 객체의 행방은? → SecurityContextHolder 안에 들어간 것 → 로그인 할 때 로그인 정보가 밑의 2개의 필터에 의해 관리됨 # SecurityContextPersistenceFilter - SecurityContext를 HTTP session에 캐시(기본 전략)하여 여러 요청에서 Authentication을 공유하는 필터 - SecurityContextRepository를 교체하여 세션을 HTTP session 이 아닌 다른 곳에 저장하는 것도 가능하다. HttpRequestResponseHolder holder = new HttpRequestResponseHolder(request, re..
# SecurityContextHolder 와 Authentication - SecurityContextHolder : SecurityContext 제공, 기본적으로 ThreadLocal 을 사용한다. ThreadLocal : 한 쓰레드 내에서 공유하는 저장소 (ThreadLocal 안에 있기 때문에 파라미터를 사용하지 않아도 데이터를 접근할 수 있음) - SecurityContext : Authentication 제공 - Authentication : Principal 과 GrantAuthority 제공 - Principal : "누구"에 해당하는 정보. UserDetailsService 에서 리턴한 객체 객체는 UserDetails 타입 - GrantAuthority : "ROLE_USER", "RO..
# 스프링 시큐리티 테스트 코드 작성 1. 먼저 스프링 시큐리티 테스트 의존성을 build.gradle 에 추가해준다. testImplementation 'org.springframework.security:spring-security-test' implementation 'junit:junit:4.12' 2. 아래와 같은 위치에 AccountControllerTest 를 만들어준다. 3. Junit 4 설정을 위해 아래와 같이 인텔리제이 설정을 바꿔준다. 4. 아래와 같이 어노테이션을 설정해 준다. package com.gig.gongmo; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.fa..
# 스프링 시큐리티 JPA 연동하기 1. 먼저 JPA와 연동하기 위해 JPA, 데이터베이스인 h2 의 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' 2. 스프링 시큐리티에서 로그인할 계정정보 테이블을 만들기 위해 아래와 같은 트리구조를 형성해준다. - Account 도메인 클래스 @Entity @Getter @Setter public class Account { @Id @GeneratedValue private Long id; @Column(unique = true) private String username; private String passwo..
# 스프링 시큐리티 개발환경 설정 방법 1. 인텔리제이 -> New Project의 Spring initializer 를 통해 프로젝트를 생성한다. -> 이때, Java , SDK, 프로젝트 명을 설정해준다. 2. 프로젝트의 기본 Defendency를 설정해주고, Security 를 포함시킨다. - 이때, JPA, MySQL, 등은 데이터베이스 환경이 설정 된 후에 Defendency 에 추가하자.. 3. build.gradle 에서 defendency 부분에 아래와 같은 gradle이 들어가있는지 확인한다. implementation 'org.springframework.boot:spring-boot-starter-security' 4. 프로젝트의 기본 패키지 트리를 생성한다. 이때 SecurityCo..