경주장

[인가 API] 권한 설정 본문

스프링/스프링 시큐리티

[인가 API] 권한 설정

달리는치타 2022. 2. 6. 20:20

스프링 시큐리티의 권한 설정은

애플리케이션 빌드 순간에 결정되는 선언적 방식과 애플리케이션 구동중에 동적으로 설정하는 방식 두가지를 지원하며

각각 권한의 적용 범위로써 URL, Method를 설정 할 수 있다.

  • 선언적 방식
    • URL
      • http.antMatchers("/users/**").hasRole("USER)
    • Method
      • @PreAuthorize("hasRole("USER")")
  • 동적 방식 - DB 연동 프로그래밍
    • URL/Method - To be Studied...

http
        .antMatcher("/shop/**")
        .authorizeRequests()
        .antMatchers("/shop/login", "/shop/users/**").permitAll()
        .antMatchers("/shop/mypage").hasRole("USER")
        .antMatchers("/shop/admin/pay").access("hasRole('ADMIN')")
        .antMatchers("/shop/admin/**").access("hasRole('ADMIN') or hasRole('SYS')")
        .anyRequest().authenticated();

* Note - 구체적인 경로를 위에 설정할 것

 


인가 API 표현식

 

메소드 동작
authenticated() 인증된 사용자의 접근을 허용
fullyAuthenticated() 인증된 사용자의 접근을 허용, rememberMe 인증 제외
permitAll() 무조건 접근을 허용
denyAll() 무조건 접근을 허용하지 않음
anoymous() 익명사용자(Role_anonymous)의 접근을 허용
rememberMe() rememberMe 인증을 통해 인증된 사용자의 접근을 허용
access(String) SpEL 표현식의 평가 결과가 true이면 허용
hasRole(String) 사용자가 주어진 역할이 있다면 허용
hasAuthority(String) 사용자가 주어진 권한이 있다면 허용
hasAnyRole(String...) 사용자가 주어진 역할 중 어떤것이라도 있다면 허용
hasAnyAuthority(String...) 사용자가 주어진 권한 중 어떤것이라도 있다면 허용
hasIpAddress(String) 주어진 IP로부터 요청이 왔다면 접근을 허용