Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- react
- 리액트
- 오라클
- 자바
- redux
- VUE
- 리덕스
- EBS
- rabbitmq 에러
- 자료구조
- exiting abnormally
- Express
- $emit()
- 커스텀 로그인
- 트리 회전
- 애그리거트
- quert
- AWS
- vue.js
- 네임드 뷰
- REDIS
- ACCESS_REFUSED
- paraller
- forNmae()
- 도커빌드
- 컴포넌트 주도
- .getClass()
- 오라클 병렬처리
- Java Reflextion API
- 리덕스 공식문서
Archives
- Today
- Total
개발정리
스프링 시큐리티-권한 부여(엑세스 제한) 본문
권한 부여란?
식별된 클라이언트가 요청된 리소스에 엑세스할 권한이 있는지 시스템이 결정하는 프로세스
스프링 시큐리티에서 애플리케이션은 인증 흐름을 완료한 후 요청을 권한 부여 필터에 위임,
필터는 구성된 권한 부여 규칙에 따라 요청을 허용하거나 거부
userDetailsService로 사용자 세부정보 검색,
UserDetails의 getAuthorities()메서드는 여러개의 GrantedAuthority를 컬렉션으로 가진다.
권한 부여 예제
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello!";
}
}
/hello 엔드포인트에 접근했을 때 "Hello!"를 리턴하는 간단한 컨트롤러 입니다.
@Configuration
public class ProjectConfig {
@Bean
public UserDetailsService userDetailsService() {
var manager=new InMemoryUserDetailsManager();
var user1=User.withUsername("john")
.password("12345")
.authorities("READ")
.build();
var user2=User.withUsername("jane")
.password("12345")
.authorities("WRITE")
.build();
manager.createUser(user1);
manager.createUser(user2);
return manager;
}
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
@Bean
public SecurityFilterChain filterChainV3(HttpSecurity http) throws Exception {
http.httpBasic();
http.authorizeRequests().anyRequest().hasRole("READ");
return http.build();
}
}
john에게는 READ권한을 부여하고 jane에게는 WRITE권한을 부여
현재 모든 엔드포인트는 "READ"권한을 가진 사용자만 접근 가능
->사용자 john은 접근 가능하지만 jane은 접근 불가능
참고:스프링 시큐리티 인 액션
'스프링 > 스프링 시큐리티' 카테고리의 다른 글
스프링 시큐리티-커스텀 로그인 구현 (1) | 2023.12.30 |
---|---|
스프링 시큐리티-CSRF 보호 (0) | 2023.09.27 |
스프링 시큐리티-기본구성 (0) | 2023.09.21 |
HTTP BASIC 인증 예제 (0) | 2023.09.18 |
스프링 시큐리티-아키텍처 (0) | 2023.08.23 |