inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링부트 시큐리티 & JWT 강의

스프링부트 시큐리티 5강 - 시큐리티 권한처리

권한 설정 부여가 안됨

1100

ymg12347

작성한 질문수 4

0

@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
    http.csrf(CsrfConfigurer::disable);
    http.authorizeHttpRequests(authorize -> authorize
            // "/user/~" 이 주소로 들어오면 인증이 필요함 -> 인증만 되면 들어갈 수 있는 주소!
            .requestMatchers("/user/**").authenticated()
            // "/manager/~" 이 주소로 들어가기 위해서는 Admin과 Manager 권한이 있는 사람만 들어올 수 있음
            .requestMatchers("/manager/**").hasAnyRole(Role.ADMIN.name(), Role.MANAGER.name())
            // "/admin/**" 이 주소로 들어가기 위해서는 Admin 권한이 있는 사람만 들어올 수 있음
            .requestMatchers("/admin/**").hasAnyRole(Role.ADMIN.name())
            // 설정한 주소가 아니면 누구나 들어갈 수 있음
            .anyRequest().permitAll()

    );

enum을 사용하여 Spring Security를 다음과 같이 설정했습니다.

 

public enum Role {
    USER, MANAGER, ADMIN
}

 

enum은 다음과 같이 작성했습니다.

 

DB는 다음과 같습니다.

 

문제가 없는 것 같은데.. /admin 또는 /manager로 들어갈 시에 403에러가 뜹니다. 시큐리티 설정에서 문자열로 바꾸거나 ROLE_ 붙여도 안되고... 현재 쓰고있는 버전은 스프링 3.X버전, 시큐리티 6.X버전입니다.

에러가 나는 이유가 무엇일까요?

spring spring-security jwt

답변 2

0

bandisnc


처럼 db의 role에 직접 ROLE_xxx로 설정해주니 권한 인식 하네요

-2

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

ymg12347님의 스프링 시큐리티 설정과 관련된 문제를 확인해보겠습니다. 스프링 시큐리티 설정 시 권한 부여 관련하여 문자열에 “ROLE” 접두어를 붙여야 할 수 있습니다. 이는 스프링 시큐리티 내부에서 사용하는 기본 포맷이기 때문에, 해당 접두어 없이 설정 시 권한을 찾을 수 없어 403 에러가 발생할 수 있습니다. 스프링 시큐리티 6.X 버전을 사용 중이라면 hasAnyRole 메서드에 전달하는 역할 이름에 “ROLE” 접두어를 포함시켜야 할 수 있습니다. 예를 들어,

.requestMatchers("/manager/**").hasAnyRole("ROLE_ADMIN", "ROLE_MANAGER")
.requestMatchers("/admin/**").hasAnyRole("ROLE_ADMIN")

와 같이 설정을 변경해야 할 수 있습니다.

스프링 부트 3.X와 스프링 시큐리티 6.X 버전에서 “ROLE_” 접두어를 자동으로 추가하지 않도록 변경되었을 가능성을 고려해야 합니다. 자세한 내용은 스프링 시큐리티 참조 문서(https://docs.spring.io/spring-security/reference/6.1.5/security-core/index.html)에서 확인하실 수 있습니다.

문제가 계속된다면, 자세한 로그를 통해 추가적인 문제가 없는지 확인해보시기 바랍니다.

JWT를 구현한 다음 이 API를 호출해서 사용하는 것은 프론트엔드 쪽에서 하는 역할인가요?

0

94

1

Jwt쓰면 스프링시큐리티는 필수적으로 사용해야하나요?

0

401

1

13:23 system.out 출력문이 다르게 나옵니다.

0

130

1

수료증 문의

0

226

2

9분대에 질문이 있습니다 !

0

114

1

password 비교를 하지 않았는데 어떻게 인증이 통과된 건가요?

0

320

1

이전 강의 참고하라는 말씀

0

253

1

강의 실습하다가 막히는 분들 참고(2024년8월 기준)

2

1116

2

구글 소셜 로그인 302

0

200

1

오류 문의 _ org.springframework.orm.jpa.JpaSystemException: could not deserialize

1

584

1

[자바] 시큐리티 Config 참고

13

953

1

이론강의

0

280

1

SpringSecurity JWT 로그인 URL 2개 설정하는 방법

0

487

1

2024.06기준) 최근 SecurityConfig 설정 문의

0

921

3

구글 로그인시 authentication이 null 값이라고 에러가 발생합니다.

0

677

2

특정 url필터 거는 방법 이슈

0

422

1

강사님께서 말씀하시는 시큐리티세션이 SecurityContext인가요?

0

277

1

25강 마지막 테스트에서 오류

1

1044

2

jwt를 저장하는 위치에 궁금한 점이 있습니다.

0

298

1

mustache를 사용하지 않고 thymeleaf를 사용하려고 하는데

0

696

1

세션 인증방식이 REST 원칙에 위배되는 건가요?

0

338

1

jwt와 실제데이터의 관계

1

242

1

jwt 와 세션ID의 관계

1

312

1

SecurityConfig에서 세션 설정, 인가 설정

0

417

1