2019. 8. 3. 19:25ㆍ[정리] 기능별 개념 정리/Security + OAuth
인터페이스 | 역할 | 주요 메소드 |
WebSecurityConfigurerAdapter |
1. 사용자의 권한에 따라 접근 URL 을 달리할 수 있다. passwordEncoder, userDetailsService, [OAuth] authenticationManager [OAuth] tokenStore [OAuth] corsConfigureationSource |
- configure |
UserDetails | 스프링 시큐리티에서 로그인 기능을 구현하기 위해 기업에서 사용하는 보편적인 정보를 추상화 해놓은 인터페이스. |
- getAuthorities |
UserDetailsService | 개발자가 구현해 놓은 User service 가 상속해야하는 인터페이스 loadUserByUsername 이라는 메소드를 통해서 스프링 시큐리티가 이를 이용하여 로그인 여부를 판단한다. | - loadUserByUsername |
AccessDeniedHandler | 관리자 기능에 일반 사용자가 접근할 때 페이지를 포워딩 시키는 핸들러 | - hander |
AuthenticationFailyerHandler | 로그인이 실패 했을 때 실행되는 핸들러 | - handle |
AuthenticationSuccessHandler | 로그인이 성공 했을 때 실행되는 핸들러 | - handle |
ResourceServerConfigurerAdapter | [OAuth] Resource server OAuth 인증이 필요한 URL 을 나열할 수 있다. cors, csrf 에관한 설정도 처리할 수 있다. |
- configure |
AuthorizationServerConfigurerAdapter |
[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 |