본문 바로가기
Today/Study

23/11/10

by shulk 2023. 11. 10.

● Spring Security란

* spring Security는 spring 기반 애플리케이션의 보안(인증,인가등)을 담당하는 스프링 프레임워크다.

 

* spring Security는 인증,인가에 대한 부분을 Filter에서 처리하니 비지니스 로직에서 안해도된다.

( spring Security 는 서블릿의 필터 기반으로 동작)

 

* Spring Security는 세션-쿠키 방식으로 인증한다

 

[ 인증과 인가 ]

* 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인하는 절차
* 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차

 

● UserDetails

* Spring Security에서 사용자의 정보를 담는 인터페이스

 

 UserDetailsService 

* Spring Security에서 유저의 정보를 가져오는 인터페이스

 

(UserDetails, UserDetailsService 이용하면 default로그인이 아닌 네이버,구글처럼 DB이용해서 일반 사용자 로그인 할 수 있다.)

 

 

 

● DelegatingFilterProxy

* Spring Security는 작업하기 위해 Servlet Container 기반의 필터에서 수행하는데  Servlet Container 하니 스프링 컨테이너에 등록된 빈을 인식할 수 없어서 DelegatingFilterProxy  이용한다.

 

* 그러니  Spring Security에서는 DelegatingFilterProxy라는 서블릿 필터의 구현체를 제공하고, DelegatingFilterProxy 는 서블릿 매커니즘을 통해 서블릿의 필터로 등록될 수 있으며 스프링에 등록된 빈을 가져와 의존성을 주입할 수 있다.

 

● FilterChainProxy

* FilterChainProxy는 DelegatingFilterProxy 내부에 있는거고 Spring Security 제공하는 필터이다.

* DelegatingFilterProxy 를 통해 받은 요청과 응답을 SecurityFilterChain 에 전달하고, 해당 요청에 맞는 작업을 결정하는 작업을 한다.

 

 SecurityFilterChain

*  인증을 처리하는 여러 개의 시큐리티 필터를 담는 필터 체인이고, 여러 개의 SecurityFilterChain을 구성하여 매칭되는 URL에 따라 다른 SecurityFilterChain이 사용되도록 할 수있다.

 

 SecurityFilter

* 이제 각각의 필터 들을 말한다.

 

 

인증한 객체들을 관리하는 곳

 

 

 SecurityContextHolder, SecurityContext

* SecurityContextHolder는 SecurityContext를 보관,관리하는 역활이고 

SecurityContext는 인증이 완료된 사용자의 상세 정보(Authentication)를 저장한다.

 

 Authentication

* Authentication는 현재 인증된 사용자를 나타내며 SecurityContext에서 가져올 수 있다.

* principal는 사용자를 식별하고 Username/Password 방식으로 인증할 때 일반적으로 principal 는 UserDetails 인스턴스.

* credentials는 주로 비밀번호, 대부분 사용자 인증에 사용한 후 비운다.

* authorities는 사용자의 권한 정보

 

 

 

 

 

출처

https://velog.io/@soyeon207/SpringBoot-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0%EB%9E%80

 

https://limdevbasic.tistory.com/19

 

나중 Security 모듈에 대해 참고 하고 싶을땐 ↓ 참고

https://king-ja.tistory.com/68 

'Today > Study' 카테고리의 다른 글

23/11/15  (0) 2023.11.15
23/11/14  (0) 2023.11.14
23/11/09  (0) 2023.11.09
23/11/08  (0) 2023.11.08
23/11/06  (0) 2023.11.05