일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c
- CSS
- stl
- dataframe
- 포토샵
- 알고리즘
- Codility
- Flexbox
- skt membership
- Photoshop
- align-items
- Javascript
- 상태
- 강화학습
- Design Pattern
- Prefix Sums
- 에라토스테네스의 체
- 소수
- 백준
- Gap
- 확률
- SK바이오사이언스
- margin
- spring
- 통신사할인
- c++
- grid
- pandas
- 수학
- series
- Today
- Total
목록Backend/Spring Security (16)
sliver__

AuthenticationProviderAuthenticationProvider는 interface로 사용자가 상황에 맞는 인증방식을 구현하기 위해 구현한다.두 가지 함수가 정의되어있는데authenticatesupports이다. 유저가 name, password를 입력하여 전달하면 AuthenticationProvider를 상속받아 구현하는 class의 support 함수를 호출한다.support 함수는 Authentication interface class중 어떤 하위 구현 클래스를 사용하는지 확인하는 클래스이다. 현재 프로젝트에는 UsernamePasswordAuthenticationToken을 사용하고 있다. 이 후, authenticate 함수가 동작하게 된다.authenticate 함수 내부에는..

User ManagementSpring security에서의 User management는 여러 단계로 나뉘어져 있다.UserDetailsService, UserDetailsManager 등으로 구성되어 있다. 가장 먼저 인터페이스부터 살펴보면 UserDetailsService, UserDetailsManager 두 가지가 있다UserDetailsService는 유저의 정보를 DB 또는 Memory에서 load하는 함수가 정의되어 있다.UserDetailsManager는 유저 정보의 CRUD를 담당하고 있다. 왜 이렇게 나뉘어져 있는 걸까?그 이유는 spring security를 사용자는 각 인터페이스를 자신의 상황에 맞게 구현할 수 있도록 하기 위해서이다. 그리고 UserDetails도 interfac..

UserDetailsServiceUserDetailsService는 User의 name, password에 관여하는 interface class이다.UserDetailsService를 상속한 interface는 UserDetailsManager interface class이고 다시 UserDetailsManager를 상속받아 구현한 class는 InMemoryUserDetailsManager, JdbcUserDetailsManager class이다. 구현부인 InMemoryUserDetailsManager class의 constructor parameter로 여러 UserDetails 정보들을 넘겨줄 수 있다.UserDetails는 Spring security 적용으로 인해 login시 필요한 유저 정..
Spring security에 내가 원하는 filter는 어떻게 추가할까? filter 동작을 구현하고 SecurityFilterChain에 추가하면 된다. httpSecurity의 .addFilterAt, .addFilterBefore, .addFileterAfter가 있다.addFilterAt(Filter filter, Class AtFilter)첫 번째 파라미터는 추가하려는 필터 대상두 번째 파라미터는 함수 이름을 따라 해당 필터가 "언제" 실행될 지 기준이 되는 필터addAtFilter 함수의 경우, 동시에 수행되는 필터의 순서는 랜덤이다.그러므로 순서에 종속성이 없는 필터인 경우 사용해야 한다.addFilterBefore(Filter filter, Class beforeFilter)addFile..

Token은 왜 사용될까?Client가 서버에 접근할 때, 해당 client가 올바른 계정 정보를 가지고 접근했는지 판단하기 위해 사용된다.Client가 username, password를 server로 전송하면Server는 username, password를 검증하고 token을 발급하여 client에게 전달한다.Client는 전달받은 token을 header에 추가하여 원하는 API에 접근하면Server는 token을 검증하고, 유효하다면 데이터를 return한다. 여러 Token 방식이 있는데, 그 중 JWT는 Json 형식의 데이터를 사용하여 token을 생성한다.JWT 방식은 인증 서버 없이도 Client/Server app에서 유효한 지 검증이 가능하다.구성은 아래와 같다. {header}.{..
@Configuration annotation으로 여러가지 http request에 대한 filter를 구현했다. @BeanSecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception { CsrfTokenRequestAttributeHandler csrfTokenRequestAttributeHandler = new CsrfTokenRequestAttributeHandler(); http.securityContext(contextConfig -> contextConfig.requireExplicitSave(false)) .sessionManagement(sessionConfig -> ses..