kok202
스프링 시큐리티 주요 인터페이스

2019. 8. 3. 19:25[정리] 기능별 개념 정리/Security + OAuth

 

인터페이스 역할 주요 메소드
WebSecurityConfigurerAdapter

1. 사용자의 권한에 따라 접근 URL 을 달리할 수 있다.
2. 시큐리티에서 필요한 주요 Bean 파일들을 여기에 담는다.

passwordEncoder,

userDetailsService,

[OAuth] authenticationManager

[OAuth] tokenStore

[OAuth] corsConfigureationSource

- configure
UserDetails 스프링 시큐리티에서 로그인 기능을 구현하기 위해 기업에서 사용하는 보편적인 정보를 추상화 해놓은 인터페이스.

- getAuthorities
- getPassword
- getUsername
- isAccountNotExpired
- isAccountNonLocked
- isCredentialsNonExpired
- isEnabled

UserDetailsService 개발자가 구현해 놓은 User service 가 상속해야하는 인터페이스 loadUserByUsername 이라는 메소드를 통해서 스프링 시큐리티가 이를 이용하여 로그인 여부를 판단한다. - loadUserByUsername
AccessDeniedHandler 관리자 기능에 일반 사용자가 접근할 때 페이지를 포워딩 시키는 핸들러 - hander
AuthenticationFailyerHandler 로그인이 실패 했을 때 실행되는 핸들러 - handle
AuthenticationSuccessHandler 로그인이 성공 했을 때 실행되는 핸들러 - handle
ResourceServerConfigurerAdapter [OAuth]
Resource server
OAuth 인증이 필요한 URL 을 나열할 수 있다.
cors, csrf 에관한 설정도 처리할 수 있다.
- configure
AuthorizationServerConfigurerAdapter

[OAuth]
Authorization server
OAuth 인증을 해주는 서버
토큰 발급
토큰 리프레시

- configure

 

 

 

따로 클래스를 만들 필요없이 빈으로 등록한뒤 Factory 를 통해 return 하면 되는 인터페이스들

인터페이스 역할  
AuthenticationManager 실제로 인증하는 매니저  
TokenStore [OAuth]
OAuth 토큰들을 저장하는 저장소
 
PassworEncoder 비밀번호 관련된 필드를 암호화 해주는 인코더. 주로 Bcrypt 를 많이 사용한다.  
CorsConfigurationSource Cros origin configuration 소스 제공  

 

 

 

인증 처리 과정

0. 유저가 인증을 요청한다. 이 때 authentication 으로 유저가 요청한 정보가 담겨 온다.

1. UserDetailsService 에서 loadUserByUsername(String username) 으로 유저 정보를 조회해온다.

2. AuthenticationProvider 에서 authenticate(Authentication authentication) 으로 1에서 불러온 유저 정보와 0에서 요청한 정보를 비교한다.

3. 인증에 성공하면 AuthenticationProvider 는 authenication 객체에 principal, credential 정보를 담아 돌려준다.

4. 스프링 시큐리티는 authentication 객체를 SecurityContext 에 담아 보관한다.

5. 스프링 시큐리티는 SecurityContext 를 SecurityContextHolder 에 담아 보관한다.

 

 

 

'[정리] 기능별 개념 정리 > Security + OAuth' 카테고리의 다른 글

Spring security아키텍처 관점의 인증 과정  (0) 2019.10.11
OAuth 그림 요약  (0) 2019.08.23
스프링 시큐리티 개요  (0) 2019.08.03
Security 기초 (2)  (0) 2019.07.13
Security 기초 (1)  (0) 2019.07.13