Authorization - 인가 처리 당신에게 무엇이 허가 되었는지 증명하는 것! Spring Security는 Authentication, Authorization 두 개의 영역으로 나눔 사용자가 자원에 접근하려고 할때 인증을 받았는지 안받았는지 여부를 먼저 확인 인증을 받았다면 사용자가 받은 권한이 해당 자원에 접근하기 위한 권한이 맞는지 확인한다! 인증을 먼저 확인하고 인가까지 확인한다! 스프링 시큐리티가 지원하는 권한 계층 웹 계층 URL 요청에 따른 메뉴 혹은 화면단위의 레벨 보안 서비스 계층 화면 단위가 아닌 메소드 같은 기능 단위의 레벨 보안 도메인 계층(Access Control List, 접근제어목록) 객체 단위의 레벨 보안 FilterSecurityInterceptor 마지막에 위치한..
인증처리를 할때 가장 핵심적인 역할을 하는 클래스 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..
- Total
- Today
- Yesterday
- LocalDate
- config-location
- JavaScript
- 베리 심플
- jQuery
- docker
- Bash tab
- 오라클
- 북리뷰
- springboot
- mybatis config
- intellij
- Java
- window
- Kotlin
- input
- oracle
- Spring
- elasticsearch
- k8s
- rocky
- Mac
- LocalDateTime
- mybatis
- Spring Security
- Github Status
- Linux
- localtime
- maven
- svn
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |