본문 바로가기

JAVA/- Spring

[Spring security] 권한 설정 해보기, 권한 표현식 알아보기

OAuth2로 접근을 허용할 때 어느 url을 허용할 꺼냐를 설정해야합니다.

spring security에서 WebSecurityConfigurerAdapter를 상속 받아서 조절할 수 있습니다.

 

먼저 spring security 의존을 가져와야 합니다.

implementation 'org.springframework.boot:spring-boot-starter-security'

저는 OAuth2를 사용합니다.

 

* WebSecurityConfigurerAdapter 상속 주의점

더보기

    - configure(WebSecurity web) 구현

     - configure(HttpSecurity http) 구현

* 이 메서드를 @Override 하지 않으면 스프링에서 기본으로 제공하는 로그인 화면이 나옵니다.

 

[Spring Security] 권한 설정 및 표현식



  1. 권한설정
    • 선언적 방식
      • URL
        • http.antMatchers("/users/**").hasRole("USER")
      • Method
        • @PreAuthorize("hasRole('USER')")
          public void user(){............}
    • 동적방식 - DB연동프로그래밍
      • URL
      • Method

예시 코드

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

 

표현식

  • authenticated() ;  인증된 사용자의 접근을 허용
  • fullyAuthenticated(): 인증된 사용자의 접근을 허용,  rememberMe인증 제외
  • permitAll(): 무조건 허용
  • denyAll(): 무조건 차단
  • anonymous(): 익명사용자 허용
  • rememberMe(): rememberMe 인증 사용자 접근 허용
  • access(String): 주어진 SpEL표현식의 평가 결과가 true 이면 접근허용
  • hasRole(String): 사용자가 주어진 역할이 있다면 접근을 허용
  • hasAuthority(String): 사용자가 주어진 권한이 있다면 허용
  • hasAnyRole(String...): 사용자가 주어진 어떤권한이라도 있으면 허용
  • hasAnyAuthority(String...): 사용자가 주어진 권한중 어떤 것이라도 있다면 허용
  • hasIpAddress(String): 주어진 IP로 부터 요청이 왔다면 접근을 허용
728x90
반응형
 

참고

[OAuth2 구글 적용해보기]

https://fenderist.tistory.com/411 [Devman:티스토리]

728x90