본문 바로가기
개발서적

스프링 인 액션 - (2)

by 공부 안하고 싶은 사람 2022. 8. 10.
반응형

chapter 4 시프링 시큐리티

public class SecurityConfig extends WebSecurityConfigurerAdpater {
  // WebSecurityConfigurerAdpater 상속 후 메소드들을 override 하여 스프링 시큐리티 세부 설정을 커스터마이징 할 수있다.  
    // configure(HttpSecurity http) -> 웹 요청 보안 처리
  // configure(AuthenticationManagerBuiler auth) -> 유저 스토어 설정
}
웹 요청 보안 처리

http 요청 처리를 허용하기 전에 인가확인

  • 로그인 페이지 url 설정
  • 로그아웃 url 설정
  • csrf 공격 방어 설정
 
 
유저 스토어 설정

inmemory : 메모리에 인증/인가 정보 저장

  • DB : 정해진 인증 인가 쿼리/테이블 (users, authorities 등) -> 쿼리를 커스터마이징 할 수도 있다.
  • LDAP : 사용자가 직접 LDAP서버에서 인증 받거나, 비밀번호를 비교하는 방법으로 인증
  • 커스텀 명세 : 더 복잡한 관계에선 필터/AuthenticationManager/AuthenticationProvider/UserDetails+UserDetails 등을 커스텀해야한다.

Spring5에선 유저의 비밀번호를 암호화하여 저장해야 한다. (BCryptPasswordEncoder, StandardPasswordEncoder 등으로)

 
 
사용자 인지하기
  • Principal 객체를 컨트롤러 메서드에 주입
  • Authentication 객체를 컨트롤러 메서드에 주입
  • Object 반환으로 인한 타입변환 필요
  • @AuthenticationPrincipal 애노테이션을 컨트롤러 메서드에 지정
    • 타입변환 불필요
  • SecurityContextHolder를 사용해서 SecurityContext 얻기 (인증 토큰을 가져오기)
    • 어플리케이션 전 영역에서 활용 가능

 

chapter 5 구성 속성 사용하기

5.1 자동-구성 세부 조정하기

스프링의 2가지 구성

빈 연결 : 컨테이너에서 빈을 선언하거나, 상호 간 주입 되는 방법을 선언하는 구성

  • @Configuration + @Bean
  • 속성 주입 : 컨테이너에서 빈의 속성 값을 설정하는 구성
    • @Autowired

 

 

스프링 환경 추상화 : JVM 변수, 환경 변수, 명령행 인자, .yml 파일의 속성 정보를 한군데 모으고 -> 해당 정보를 필요로 하는 컨테이너 내부의 빈에게 전달

데이터 소스 구성

  • 내장 서버 구성
  • 로깅 구성
  • 다른 속성 정보 값 가져오기

 

 

5.2 우리의 구성 속성 생성하기

속성 정보를 클래스에 바인딩하는 법

taco.orders.size: 10
@ConfigurationProperties(prefix="taco.orders")
public class xxxConfig {
  private int size;
}

 

 

5.3 Profile 사용해서 구성하기

프로파일 별 속성 정의 : application-{profile명}.yml 으로 프로파일으로 해당 profile에 적당한 구성 속성을 정의 가능

Profile 활성화 하는 법

  • 프로덕션 환경 : export SPRING_PROFILES_ACTIVE=prod

명령행 인자 : java -jar xxx.jar --spring.profiles.active=prod

Profile 별 빈 생성 : @Profile("profile명")

728x90
반응형

댓글