inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Spring Boot JUnit Test - Ứng dụng ngân hàng sử dụng bảo mật

Đánh giá mã JWT bảo mật và hiểu khái niệm

권한처리를 위한 세션강제주입

Đã giải quyết

418

cristiano

24 câu hỏi đã được viết

0

/api/admin 요청 시 권한만을 체크하기 위해 id 와 role 만 있는 객체를 시큐리티세션에 저장했다고 하셨는데

만약 username 이나 email 이 필요한 경우라면 그 로직도 BasicAuthenticationFilter 를 상속받은 필터에서 doFilterInternal() 메서드 안에서 강제주입을 할때 username 과 eamil을 가져와서 시큐리티 세션에 강제주입하는건가요 ?

spring-boot junit 소프트웨어-테스트

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
네, 맞습니다. 만약 /api/admin 요청 시 사용자의 username이나 email과 같은 추가 정보가 필요하다면, BasicAuthenticationFilter를 상속받은 커스텀 필터의 doFilterInternal() 메서드에서 해당 정보를 가져와서 Spring Security의 세션에 강제로 주입할 수 있습니다. 이를 통해 권한 검사뿐만 아니라 필요한 정보를 세션에서 사용할 수 있게 됩니다.

참고로 @WithMockUser를 사용하여 테스트 환경에서는 특정 권한을 가진 가짜 사용자를 만들어 테스트를 수행할 수 있습니다. Spring Boot의 관련 문서에 나와 있는 예시를 살펴보면 테스트 코드에서 @WithMockUser(roles = "ADMIN") 어노테이션을 통해 ADMIN 역할을 가진 사용자를 테스트에 활용하는 것을 볼 수 있습니다.

Java 예시:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

@WebMvcTest(UserController.class)
class MySecurityTests {

    @Autowired
    private MockMvc mvc;

    @Test
    @WithMockUser(roles = "ADMIN")
    void requestProtectedUrlWithUser() throws Exception {
        this.mvc.perform(get("/"));
    }

}

Kotlin 예시:

import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.security.test.context.support.WithMockUser
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders

@WebMvcTest(UserController::class)
class MySecurityTests(@Autowired val mvc: MockMvc) {

    @Test
    @WithMockUser(roles = ["ADMIN"])
    fun requestProtectedUrlWithUser() {
        mvc.perform(MockMvcRequestBuilders.get("/"))
    }

}

추가적으로 테스팅에 대한 더 자세한 정보는 Spring Boot와 Spring Security의 참고 문서를 확인하시면 됩니다.
- Spring Boot 테스팅 가이드: Spring Boot Reference Documentation
- Spring Security 테스팅 지원: Spring Security Reference Documentation

요청/응답 DTO 관련 문의

0

170

2

안녕하세요 인증이 필요한 url을 위하여 /s를 붙이는것에 대해 질문있습니다.

0

161

1

validation aop사용에 대해서 질문있습니다.

0

245

2

Dummy 클래스 위치에 대한 질문

0

293

2

테스트 방식에 관해서 질문이 있어요

0

292

2

스프링 버전업일 경우에는 Pointcut @PostMapping 조건이 달라질까요?

1

434

1

equals와 longValue 관련 질문드립니다

0

329

1

계좌번호를 Long 타입으로 하는 이유가 무엇일까요?!

0

499

2

[정보공유] Hibernate 로그 작동 안하시는 분들!!

3

346

0

UserControllerTest 테스트 실패 문의

0

318

1

스프링 시큐리티 6.2 버전 이후로 apply() 메서드를 이용한 JwtAuthenticationFilter 가 등록이 안됩니다.

2

1107

1

import 오류

0

427

3

spring initializer gradle 에서 3.x.x 대 밖에 없어요. 2.x.x는 보이지 않는데 어떡하져

0

438

2

안녕하세요 로그엔 성공적으로 들어온것같습니다..

0

237

1

JwtAuthorizationfilter test mvc.performget 관련 질문입니다!

0

287

1

JwtAuthorizationfilter test mvc.performget 부

0

226

1

longValue() 질문

0

228

1

jwt 인가필터 규현및 등록

0

334

1

스프링부트 3버전

1

334

1

JwtVO 를 인터페이스로 만든 이유

0

359

1

계좌 조회 질문드립니다

0

229

1

DummyObject 에 대하여

0

308

2

DTO를 이너클래스로 계속추가하는 이유

0

695

2

Builder 사용 궁금

0

404

1