인증처리를 할때 가장 핵심적인 역할을 하는 클래스 AuthenticationManager가 현재 인증을 처리할 수 있는 가장 적절한 AuthenticationProvider를 찾아서 인증을 위임한다. 인증을 처리하고 자기에게 위임한 AuthenticationManager에게 인증 결과를 돌려준다. AuthenticationProvider는 보통 개발자들이 본인들 프로젝트 실정에 맞게 끔 구현한다. AuthenticationProvider는 인터페이스로 2개의 메서드를 가진다. authenticate 메서드는 인증 처리를 위한 검증을 한다. supports는 현재 인증을 처리할 수 있는 기준이 되는지를 검사한다. authenticate 메서드에 authentication 인자를 받는데 여기에서 사용자가 입..
인증처리를 하는 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..
- Total
- Today
- Yesterday
- window
- Github Status
- maven
- Linux
- rocky
- jQuery
- 베리 심플
- 북리뷰
- Mac
- Spring
- springboot
- 오라클
- mybatis
- docker
- localtime
- mybatis config
- intellij
- config-location
- LocalDate
- JavaScript
- Bash tab
- svn
- 프로페셔널 스튜던트
- Java
- input
- elasticsearch
- LocalDateTime
- Spring Security
- oracle
- Kotlin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |