인증처리를 하는 Filter 로부터 인증 처리를 실제로 지시받는 첫번째 클래스 AuthenticationManager는 인터페이스이고 이 인터페이스를 구현한 구현체가 ProviderManager 이다. 이 클래스는 인증처리를 직접하지 않는다. AuthenticationProvider 목록 중에서 인증 처리 요건에 맞는 AuthenticationProvider를 찾아 인증처리를 위임한다. 부모 ProviderManager를 설정하여 AuthenticationProvider를 계속 탐색 할 수 있다. 참고 https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B..
인증에 대한 전반적인 처리과정 흐름을 이해해보자 클라이언트가 로그인을 요청한다. 폼 인증방식으로 요청할 때 UsernamePasswordAuthenticationFilter가 작동한다. 사용자의 id와 password를 받아서 Authentication 객체에 담는다. id와 password를 담은 인증 전 토큰 객체를 생성해서 AuthenticationManager에게 인증을 맡긴다. AuthenticationManager가 필터로 부터 받은 인증객체를 전달받는다. AuthenticationManager의 역할은 인증의 전반적인 관리를 하는데 실제로 인증 역할을 하지 않고 적절한 AuthenticationProvider에 위임한다. AuthenticationManager가 사용자의 현재 id , pas..
SecurityContextPersistenceFilter SecurityContext 객체의 생성과 저장 조회를 하는 역할을 한다. FilterChainProxy 에서 두 번째에 위치하고 있다. 나머지 필터들이 참조해서 사용하기 때문이다! 익명 사용자 새로운 SecurityContext 객체를 생성하여 SecurityContextHolder에 저장 AnonymousAuthenticationFilter 에서 AnonymousAuthenticationToken 객체를 SecurityContext에 저장 인증 시 새로운 SecurityContext 객체를 생성하여 SecurityContextHolder에 저장 UsernamePasswordAuthenticationFilter 에서 인증 성공 후 Securit..
인증 저장소 SecurityContext Authentication 객체가 저장되는 보관소로 필요 시 언제든지 Authentication 객체를 꺼내어 쓸 수 있도록 제공되는 클래스 ThreadLocal에 저장되어 아무 곳에서나 참조가 가능하도록 설계함. 인증이 완료되면 HttpSession에 저장되어 어플리케이션 전반에 걸쳐 전역적인 참조가 가능하다. SecurityContextHolder 인증된 사용자 정보를 담는 그릇? 이라고 생각하는게 좋을 것 같다. ScurityContext 객체 저장 방식 MODE_THREADLOCAL: 스레드 당 SecurityContext 객체를 할당, 기본값 MODE_INHERITABLETHREADLOCAL: 메인 스레드와 자식 스레드에 관하여 동일한 SecurityCo..
Authentication Authentication이란 인증 주체이다. 당신이 누구인지 증명하는 것! 사용자의 인증정보를 저장하는 토큰 개념 인증 시 id와 password를 담고 인증 검증을 위해 전달되어 사용된다. 인증 후 최종 인증 결과 (user 객체, 권한정보)를 담고 SecurityContext에 저장되어 전역적으로 참조가 가능) Authentication authentication = SecurityContextHolder.getContext().getAuthentication() Authentication 객체의 구조 1) principal: 사용자 ID 혹은 User 객체를 저장 2) credentials: 사용자 비밀번호 3) authorities: 인증된 사용자의 권한 목록 4) d..
스프링 시큐리티 설정클래스가 여러 개 있을 경우 설정 클래스별로 보안작동이 각각 작용하게 된다. 설정클래스 별로 보안 기능이 각각 작동 설정클래스 별로 RequestMathcer 설정 http.antMatcher("/admin/**") 설정클래스 별로 필터가 생성 FilterChainProxy가 각 필터들을 가지고 있다. 요청에 따라 RequestMatcher와 매칭되는 필터가 작동된다. 1. GET방식으로 /admin 주소로 자원 요청 2. FilterChainProxy에서 요청을 받아 요청을 처리할 필터를 선택 3. 요청 URL과 matches를 하여 true가되는 Filter를 선택해야 한다. => FilterChainProxy가 저장하고 있는 각각의 SecurityConfig 객체들에서 Reque..
기존 맥 os 업데이트 이후 jdbc connection locale 에러가 나오면 시스템 환경설정 > 언어및지역 > 지역 지역을 대한민국에서 미국으로 변경한뒤에 다시 대한민국으로 변경하면 됐지만 ventura 부터는 버그인지 아직은 안된다고함. java 환경이면 jvm 옵션에 -Duser.language=kr -Duser.country=KO 추가 메이븐 환경이면 .... -Duser.language=ko ... 출처 (참고문헌) https://stackoverflow.com/questions/51431497/cant-connect-to-oracle-database-with-intellij-locale-not-recognized https://www.clien.net/service/board/cm_mac..
브라우저에서 사용자의 요청이 있을 때 서블릿 컨테이너부터 스프링 컨테이너까지 처음부터 끝까지 요청과 응답에는 Servlet Filter를 거치게 된다. 서블릿 컨테이너에서는 FilterChain을 통해서 등록된 필터를 계속 거쳐가는 것이다. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { // do something before the rest of the application chain.doFilter(request, response); // invoke the rest of the application // do something after the rest of the applicati..
- Total
- Today
- Yesterday
- Kotlin
- JavaScript
- svn
- Mac
- LocalDate
- maven
- window
- 북리뷰
- docker
- 베리 심플
- 프로페셔널 스튜던트
- LocalDateTime
- Java
- 오라클
- mybatis config
- input
- jQuery
- Linux
- localtime
- springboot
- config-location
- intellij
- elasticsearch
- Spring
- rocky
- Github Status
- Bash tab
- oracle
- Spring Security
- mybatis
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |