Session 저장소로 DB 사용 / 기존 테스트에 시큐리티 적용

iseon_u·2023년 3월 22일
0

Book

목록 보기
11/16
post-thumbnail

CH05 - Session 저장소로 DB 사용


세션 저장소

  1. 톰캣 세션 사용
    • 일반적으로 사용되는 방식
    • 2대 이상의 WAS가 구동되는 환경에서 세션 공유를 위한 추가 설정
  2. MySQL 같은 DB를 사용
    • 공용 세션으로 사용할 수 있는 가장 쉬운 방법
    • 로그인 요청마다 DB IO 발생, 성능 이슈
  3. Redis, Memcached 같은 메모리 DB를 사용
    • Embedded Redis 같은 방식이 아닌 외부 메모리 서버 필요

build.gradle

implementation('org.springframework.session:spring-session-jdbc')

application.properties

spring.session.store-type=jdbc

CH05 - 기존 테스트에 시큐리티 적용


시큐리티로 인한 기존 API 테스트 문제점

  • 인증된 사용자만 API 호출 가능
  1. CustomOAuth2UserService

    • 소셜 로그인 관련 설정 값 오류
    • test 는 application.properties 설정까지만 자동으로 가져온다
    • application-oauth.properties 설정은 수동으로 추가

    src/test/resource/application.properties

    spring.jpa.show_sql=true
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
    spring.h2.console.enabled=true
    spring.session.store-type=jdbc
    
    #Test OAuth
    
    spring.security.oauth2.client.registration.google.client-id=test
    spring.security.oauth2.client.registration.google.client-secret=test
    spring.security.oauth2.client.registration.google.scope=profile,email
  2. 302 Status Code

    • 시큐리티 설정 때문에 인증되지 않은 사용자의 요청은 이동
    • 임의로 인증된 사용자를 추가해서 테스트
    • @WithMockUser(roles=”USER”)
      • 인증된 모의 사용자
profile
🧑🏻‍💻 Hello World!

0개의 댓글