Git :)

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ch07 권한 부여 구성:액세스 제한
    IT 서적/Spring Security In Action 2024. 1. 4. 17:00
    728x90

    # 권한과 역할에 따라 접근 제한

    • 아래 그림은 회원의 권한과 관련된 세부 프로세스이다.

     

    # 사용자의 권한을 기준으로 엔드포인트로의 접근 제한

    • HttpSecurity 객체에는 다음과 같은 메소드가 존재한다.
      • hasAuthority() - 권한 하나를 지정해서 해당 권한이 있는 사용자만 엔드포인트를 호출할 수 있다.
      • hasAnyAuthority() - 여러 권한 중 하나라도 있어야 엔드포인트를 호출할 수 있다.
      • access() - 아래와 같이 응용해서 사용할 수 있다. (하지만, 코드를 읽고 디버그하기 어려운 단점이 있어서 비추한다.)
    http.authorizeRequests().anyRequest().access("hasAuthority('WRITE')");

     

    • 모든 요청 허용은 아래와 같이 설정한다.
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.httpBasic() ;
    
            http.authorizeRequests()
                    .anyRequest().permitAll() ;
        }

     

    • WRITE 권한이 있는 사용자만 엔드포인트에 접근할 수 있게 하려면 아래와 같다. 
    @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.httpBasic() ;
    
            http.authorizeRequests()
                    .anyRequest()
                    .hasAuthority("WRITE") ;
    }

     

    # 사용자 역할을 기준으로 모든 엔드포인트에 대한 접근을 제한

    • 역할은 아래와 같이 "ROLE_" 로 시작한다.
    • 사용방법은 아래와 같다.
    @Bean
    public UserDetailsService userDetailsService() {
        var manager = new InMemoryUserDetailsManager() ;
    
        var user1 = User.withUsername("john")
                .password("12345")
                .authorities("ROLE_ADMIN")
                .build() ;
    
        var user2 = User.withUsername("jane")
                .password("12345")
                .authorities("ROLE_MANAGER")
                .build() ;
    
        manager.createUser(user1);
        manager.createUser(user2);
    
        return manager ;
    
    }
    • 사용자 역할에 대한 제약 조건을 위해 다음 메소드를 활용할 수 있다.
      • hasRole() - 하나의 역할을 이름 매개변수로 받는다.
      • hasAnyRole() - 여러 역할 이름을 매개변수로 받는다.
      • access() - SpEL 식으로 이용할 때 사용한다.
    728x90

    'IT 서적 > Spring Security In Action' 카테고리의 다른 글

    ch09 필터 구현  (0) 2024.01.07
    ch08 권한 부여 구성: 제한 적용  (0) 2024.01.04
    ch05 : 인증 구현  (0) 2024.01.02
    ch04 : 암호화 방식  (0) 2023.12.30
    ch03 : 스프링 시큐리티 기본 인증 - 2  (0) 2023.12.28