Search

Spring Security 사용자 어노테이션

Tags
Spring Security
Date
2024/06/28

@WithMockUser

기능: @WithMockUser는 테스트를 위해 가상의 인증된 사용자를 생성합니다.
기본 설정: 기본적으로 사용자 이름은 "user"이고, 비밀번호는 "password"이며, 권한은 "ROLE_USER"입니다.
커스터마이징: 사용자 이름, 비밀번호, 권한 등을 지정할 수 있습니다.
@Test @WithMockUser(username = "testUser", roles = {"USER", "ADMIN"}) void testWithMockUser() { // 테스트 코드 }
Java
복사
사용 사례: 인증된 사용자로 액세스해야 하는 보안 기능을 테스트할 때 사용됩니다.

@WithAnonymousUser

기능: @WithAnonymousUser는 인증되지 않은 익명 사용자를 시뮬레이션합니다.
principal 값: 익명 사용자의 principal은 "anonymousUser"로 설정됩니다.
권한: 익명 사용자의 권한은 "ROLE_ANONYMOUS"입니다.
@Test @WithAnonymousUser void testWithAnonymousUser() { // 테스트 코드 }
Java
복사
사용 사례: 인증되지 않은 상태에서의 접근을 테스트할 때 사용됩니다.

@WithUserDetails

기능: @WithUserDetailsUserDetailsService를 통해 로드된 사용자 정보를 사용하여 보안 컨텍스트를 설정합니다.
필요한 설정: 테스트에서 사용될 사용자 정보를 제공하는 UserDetailsService 빈이 필요합니다.
사용 방법: 애너테이션의 value 속성에 UserDetailsService를 통해 로드될 사용자 이름을 지정합니다.
@Test @WithUserDetails(value = "testUser", userDetailsServiceBeanName = "myUserDetailsService") void testWithUserDetails() { // 테스트 코드 }
Java
복사
사용 사례: 실제 사용자 정보를 기반으로 인증이 필요한 경우 사용됩니다. 이 방법은 사용자 세부 정보를 커스터마이징해야 하거나 데이터베이스에서 사용자 정보를 가져와야 하는 경우에 유용합니다.

요약 및 사용 시 주의 사항

@WithMockUser: 간단하게 가짜 인증 사용자를 테스트에 삽입. 주로 권한 기반 테스트에 사용.
@WithAnonymousUser: 익명 사용자를 테스트하는 데 사용. 비인증 사용자의 접근을 테스트.
@WithUserDetails: UserDetailsService를 통해 실제 사용자 데이터를 로드. 데이터베이스 연동 또는 사용자 정보가 필요한 복잡한 시나리오에 사용.