Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 자료구조
- 로드밸런서
- 코드업
- springboot
- gcp
- Kafka
- 백준
- Spring Data JPA
- 오일러프로젝트
- Spring Boot
- VPC
- 쿠버네티스
- 카프카
- Apache Kafka
- DFS
- 알고리즘
- 인천여행
- Spring
- 스프링
- 월미도
- 프로그래밍문제
- JPA
- 백트래킹
- 스프링 부트
- 클라우드
- 클라우드 컴퓨팅
- Elasticsearch
- aws
- Docker
- 스프링부트
Archives
- Today
- Total
GW LABS
스프링 부트 핵심 가이드 (10) - 서비스의 인증과 권한 부여 본문
13.1 보안 용어 이해
- 인증: 사용자가 누구인지 확인하는 단계
- 인가: 사용자가 애플리케이션 내부의 리소스에 접근할 권한이 있는지 확인하는 단계
- 접근주체: 애플리케이션의 기능을 사용하는 주체
13.3 스프링 시큐리티의 동작 구조
- 스프링 시큐리티는 서블릿 필터 기반으로 동작
- DelegatingFilterProxy
- 서블릿 컨테이너의 생명주기와 스프링 애플리케이션 컨텍스트 사이에서 다리 역할을 수행하는 필터 구현체
- 표준 서블릿 필터를 구현하고 있고 필터체인 프록시를 내부에 가지고 있음
- 필터체인 프록시
- 스프링 시큐리티에서 제공하는 필터
- 보안 필터체인을 통해 많은 보안 필터들을 사용할 수 있음
- ex) CorsFilter, CsrfFilter, UsernamePasswordAuthenticationFilter
- 예전 버전에서는 WebSecurityConfigurerAdapter를 상속받아 설정했지만 deprecated 되었음
- UsernamePasswordAuthenticationFilter 인증과정
- 클라이언트 요청을 받으면 서블릿 필터에서 SecurityFilterChain으로 작업이 위임되고 그중 UsernamePasswordAuthenticationFilter에서 인증을 처리
- AuthenticationFilter가 요청객체에서 username, password를 추출하여 토큰생성
- AuthenticationManager(ProviderManager)에게 토큰 전달
- AuthenticationProvider에게 토큰 전달
- AuthenticationProvider는 토큰정보를 UserDetailsService에 전달
- UserDetailsService에서 전달받은 정보를 통해 DB에서 사용자를 찾아 UserDetails 객체를 생성
- UserDetails를 AuthenticationProvider로 전달, Provider에서 인증을 수행하고 성공하게 되면 ProviderManager로 권한을 담은 토큰을 전달
- ProviderManager는 검증된 토큰을 AuthenticationFilter로 전달
- AuthenticationFilter는 검증된 토큰을 SecurityContextHolder에 있는 SecurityContext에 저장
13.4 JWT
- 당사자 간에 정보를 JSON 형태로 안전하게 전송하기 위한 토큰
- xxxxx(헤더).yyyyy(내용).zzzzz(서명) 구조로 되어있음
13.5 스프링 시큐리티와 JWT 적용
- spring-boot-starter-security, io.jsonwebtoken
- 구현순서
- UserDetails와 UserDetailsService
- JwtTokenProvider 구현
- JwtAuthenticationFilter 구현
- GenericFilterBean / OncePerRequestFilter
- SecurityConfiguration 설정
- 커스텀 AccessDeniedHandler, AuthenticationEntryPoint 구현
'Book-Review > Programing' 카테고리의 다른 글
기초부터 다지는 ElasticSearch 운영 노하우 (2) - ElasticSearch 기본 동작 (0) | 2022.08.23 |
---|---|
기초부터 다지는 ElasticSearch 운영 노하우 (1) - ElasticSearch 훑어보기 (0) | 2022.08.23 |
스프링 부트 핵심 가이드 (9) - 서버간 통신 (0) | 2022.08.19 |
스프링 부트 핵심 가이드 (8) - 유효성 검사와 예외처리 (0) | 2022.08.18 |
스프링 부트 핵심 가이드 (7) - 연관관계 매핑 (0) | 2022.08.17 |
Comments