인증/인가 API - ExceptionTranslationFilter ExceptionTranslationFilter는 두 가지 예외를 처리하는 필터이다. (1) AuthenticationException - 인증 예외 처리 AuthenticationEntryPoint 호출 로그인 페이지 이동, 401 오큐 코드 전달 등 인증 예외가 발생하기 전의 요청 정보를 저장한다. RequestCache - 사용자의 이전 요청 정보를 세션에 저장 SavedRequest - 사용자가 요청했던 request 파라미터 값들이나 헤더값들이 저장되어 있다. (2) AccessDeniedException - 인가 예외 처리 AccessDenideHandler에서 예외 처리하도록 제공한다. (1) 사용자가 /user에 접근한다..
인가 API - 권한 설정과 표현식 권한 설정은 선언적 방식과 동적 방식으로 나눌 수 있다. 선언적 방식 URL - http.antMatchers("/users/**").hasRole("USER") Method - @PreAuthroize("hasRole(`USER`)") 동적 방식 - DB 연동 프로그래밍 @Override protected void configure(HttpSecurity http) throws Exception { //인가정책 http .antMatcher("/shop/**") .authorizeRequests() .antMatchers("/shop/login", "/shop/users/**").permitAll() .antMatchers("/shop/user").hasRole("U..
인증 API - SessionManagementFilter 1. 세션 관리 - 인증 시 사용자의 세션 정보르 등록, 조회, 삭제 등의 세션 이력을 관리 2. 동시적 세션 제어 - 동일 계정으로 접속이 허용되는 최대 세션수를 제한 3. 세션 고정 보호 - 인증 할 때마다 세션쿠키를 새로 발급하여 공격자의 쿠키 조작을 방지 4. 세션 생성 정책 - Always, If_Required, Never, Stateless 인증 API - ConcurrentSessionFilter - 매 요청 마다 현재 사용자의 세션 만료 여부 체크 - 세션이 만료되었을 경우 즉시 만료 처리 - session.isExpired() 값이 true이면 로그아웃 처리하고 즉시 오류페이지를 응답한다. 기존 세션 만료가 default로 설정..
개방/폐쇄 원칙 (Open/Closed Principle - OCP) 1. 특정 입출금 내역을 검색할 수 있는 기능. 예를 들어 주어진 날짜 범위 또는 특정 범주의 입출금 내역 얻기 2. 검색 결과의 요약 통계를 텍스트, HTML 등 다양한 형식으로 만들기 책을 중간에 읽으면서 어떤 내용이 나올지 예상이 돼서 기뻤다. 이거 이렇게 하면 될 거 같은데?라고 생각했는데 실제로 책에서 그렇게 하니까 진짜 기뻤다.. 기능이 추가될 때 항상 의문이 드는건 이 메서드를 어디에 정의해야 할까?인데 새 클래스를 만드는 것도 좋지만 새로운 클래스를 계속 만들수록 코드는 복잡해지고 여러 이름이 생기면서 다양한 동작 간의 관계를 이해하기가 어려우므로 처리 기능을 담당하는 이미 만들었던 BankTransactionProces..
인증 API - 동시 세션 제어 동시 세션 제어란? 동일한 계정으로 인증을 받을 때 생성되는 세션의 허용 개수가 초과되는 경우에 어떻게 세션을 유지하는 것에 대한 제어를 말한다. 최대 세션 허용 개수가 1개라고 가정 (1) 이전 사용자 세션 만료 사용자 1이 로그인하고 서버에서 인증 성공 세션 생성 사용자 2가 로그인하면 이전 사용자였던 사용자1의 세션을 만료시킴 (2) 현재 사용자 인증 실패 사용자 1이 로그인하고 서버에서 인증 성공 세션 생성 사용자 2가 로그인 하려고하면 인증 예외가 발생 @Override protected void configure(HttpSecurity http) throws Exception { //동시 세션 제어 http .sessionManagement() .maximumS..
AnonymousAuthenticationFilter 익명 사용자를 위한 필터 처음 강의를 들을때 부터 익명 사용자? 이게 왜 필요한거지 하면서 들었던 기억이 난다. 이 필터가 하는 일은 많지는 않다. 보통 사용자가 인증을 받게되면 세션에 인증을 받은 유저 객체를 저장하고 다시금 사용자가 페이지에 접근하게되면 세션에 유저 객체가 null이 아니면 인증을 받은 사용자라고 하고 null이면 인증을 받지 않은 사용자라고 한다. AnonymousAuthenticationFilter는 익명사용자와 인증 사용자를 구분해서 처리하기 위한 용도로 사용 클라이언트가 request 요청이 들어오면 인증객체가 있는지 SecurityContext 에서 확인한다. 만약 있다면 다음 필터로 넘어가고 아니라면 익명사용자용 인증객체..
인증 API - Remember Me 인증과 RememberMeAuthenticationFilter Remember Me 기능이란? 쇼핑몰 같은 사이트 들어가 보면 자동 로그인 또는 사용자 아이디 기억하기 이런 기능과 유사한 기능이라고 생각하면 된다. 사용자는 요청시에 Http Header에 Remember me 토큰을 보낸다. (1) 세션이 만료되고 웹 브라우저가 종료된 후에도 애플리케이션이 사용자를 기억하는 기능이다. (2) Remember Me 쿠키에 대한 Http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인된다. tokenValiditySeconds는 토큰의 만료시간을 지정해줄 수 있다. 기본은 14일이다. user계정을 rememberMe 인증 시..
인증 API - Logout 클라이언트가 서버에 로그아웃을 요청을 보내면 서버는 세션을 무효화시키고 인증 토큰을 삭제 시킨다. 이때 인증 토큰이 저장되어있는 SecurityContext 객체도 삭제한다. 쿠키정보도 삭제할 수 있고 로그아웃 이후에 리다이렉트 할 페이지를 지정할 수도 있다. @Override protected void configure(HttpSecurity http) throws Exception { //로그아웃 http .logout() .logoutUrl("/logout") .logoutSuccessUrl("/login") .addLogoutHandler((request, response, authentication) -> { HttpSession session = request.ge..
- Total
- Today
- Yesterday
- window
- config-location
- Linux
- svn
- rocky
- 베리 심플
- 오라클
- Kotlin
- intellij
- Spring
- Bash tab
- Github Status
- springboot
- Spring Security
- LocalDate
- input
- 북리뷰
- jQuery
- k8s
- mybatis config
- LocalDateTime
- Mac
- Java
- docker
- oracle
- JavaScript
- mybatis
- maven
- localtime
- elasticsearch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |