웹 기반으로 인가처리는 관리자(Admin) 페이지를 만들때도 항상 필요한 기능이다. 관리자만 접근이 가능하게 한다던지 이외 사용자는 메뉴별 권한에서 특정 메뉴만 접근이 가능하게 한다던지의 기획 요구사항이 많기 때문이다. 스프링 시큐리티 설정내에서 권한 관련 소스를 아래와 같이 설정할 수도 있지만 권한이 바뀌거나 삭제될때마다 프로그램 소스를 다시 컴파일해서 올릴 수 없기때문에 권한 관련 기능을 동적으로 만들 필요가 있다. antMatcher("/user").hasRole("USER") DB와 연동하여 자원 및 권한을 설정하고 제어함으로 동적 권한 관리가 가능하도록 한다. 설정 클래스 소스에서 권한 관련 코드 모두 제거 관리자 시스템 구축 회원 관리 - 권한 부여 권한 관리 - 권한 생성, 삭제 자원 관리 ..
강의에서 실전 프로젝트에 들어왔다. Ajax와 Form 인증으로 인증 처리를 할 때 스프링 시큐리티가 처리하는 과정은 크게 다르지 않다. 동일하게 Filter 기반으로 인증처리를 하게 되고 전반척인 처리과정은 거의 동일하다. 다만 좀 다른 점은 Form은 동기적인 처리방식이고 Ajax는 비동기적인 처리방식이라고 알고있으면 된다. 여기 그림에 나오는 Ajax가 Prefix로 붙은 클래스들은 모두 Ajax 인증을 구현하기 위한 Custom하게 만들은 클래스라고 보면 된다. 인증과 인가처리 부분으로 나눠서 보면된다. 위에는 인증 처리 부분이고 아래는 인가처리 부분이다. 인증 스프링 시큐리티는 모든 것이 필터로 시작된다. 필터로 시작되고 필터로 끝난다. AjaxAuthenticationFilter가 사용자의 요..
PasswordEncoder 인터페이스 비밀번호를 안전하게 암호화 하도록 제공해주는 인터페이스이다. 스프링 시큐리티가 이미 구현해 놓은 여러 암호화 구현체들이 있다. public interface PasswordEncoder { /** * Encode the raw password. Generally, a good encoding algorithm applies a SHA-1 or * greater hash combined with an 8-byte or greater randomly generated salt. */ String encode(CharSequence rawPassword); /** * Verify the encoded password obtained from storage matches ..
클라이언트가 서버에 요청할 때 스프링 시큐리티가 요청에 대해서 보안 검사를 하게된다. 해당 요청이 사용자가 리소스에 접근 할 수 있는지 권한이 있는지 확인하게 되는데 사용자가 서버에 요청한 자원들 중에 js 나 css, image 같은 리소스는 보안 필터를 적용할 필요가 없는 파일들이므로 제외시켜줘야 할 필요가 있다. 이런 리소스들을 제외하도록 설정할 수가 있다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { .... @Override public void configure(WebSecurity web) throws Exception { web.ignoring().requ..
AccessDecisionManager 인증정보, 요청정보, 권한정보를 이용해서 사용자의 자원접근을 허용할 것인지 거부할 것인지를 최종 결정하는 주체 여러 개의 Voter 들을 가질 수 있으며 Voter 들로부터 접근허용, 거부, 보류에 해당하는 각각의 값을 리턴받고 판단 및 결정 최종 접근 거부 시 예외 발생 AccessDecisionManager는 인터페이스로 이 인터페이스를 구현한 3가지의 구현체가 있다. 접근결정의 세가지 유형 AffirmativeBased 여러개의 Voter 클래스 중 하나라도 접근 허가로 결론을 내면 접근 허가로 판단한다. OR 조건이라고 생각하면 편하다. 기본 구현체이기도하다. ConsensusBased 다수표(승인 및 거부)에 의해 최종 결정을 판단한다. 동수일 경우 기본은..
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..
- Total
- Today
- Yesterday
- Linux
- config-location
- mybatis config
- maven
- mybatis
- Mac
- intellij
- Java
- LocalDate
- Spring
- 프로페셔널 스튜던트
- rocky
- Kotlin
- JavaScript
- svn
- input
- springboot
- Spring Security
- 오라클
- docker
- Bash tab
- localtime
- oracle
- elasticsearch
- window
- 북리뷰
- 베리 심플
- Github Status
- LocalDateTime
- jQuery
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |