인증 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..
Form Login 인증과 Form Login 인증 필터인 UsernamePasswordAuthenticationFilter 사용자가 GET 방식으로 home url로 이동하려고 하면 인증이 되지 않았기 때문에 서버에서는 로그인 페이지로 리다이렉트 시킨다. 기본적으로 스프링 부트 시큐리티가 제공하는 로그인 페이지가 나타나지만 이 페이지는 별도로 만들 수도 있다. 사용자는 POST 방식으로 username과 password를 입력해서 서버에 전송하고 서버에서는 세션을 생성하고 Authentication 타입 클래스의 인증 객체를 생성, SecurityContext에 세션을 저장한다. 이후에 클라이언트가 다시 home url로 이동할 때 세션에 저장된 인증 토큰으로 접근하게 되고 서버는 세션에 저장된 인증 ..
앞서 시큐리티의 인증과 인가에 대해서 이야기했다. 스프링 시큐리티에서는 세부적인 보안 기능을 설정할 수 있는 인증과 인가 API를 제공한다. 먼저 스프링 시큐리티 의존성을 추가해주고 스프링 시큐리티의 웹 보안 기능을 초기화 하고 설정해야 한다. 의존성 추가 (maven) org.springframework.boot spring-boot-starter-security 스프링 시큐리티에 의존성을 추가하고 서버를 기동하면 스프링 시큐리티의 초기화 작업 및 보안 설정이 이루어진다. 그런데 기본적인 보안 기능 외에는 만드려는 애플리케이션에서 세부적이고 추가적인 보안 기능이 필요하기 때문에 스프링 시큐리티에서 제공하는 WebSecurityConfigureAdapter를 상속받아서 세부적인 보안이나 기능을 설정할 수..
- Total
- Today
- Yesterday
- Java
- 북리뷰
- 오라클
- Spring
- Linux
- input
- JavaScript
- window
- springboot
- Kotlin
- Spring Security
- Github Status
- LocalDateTime
- LocalDate
- localtime
- svn
- rocky
- mybatis config
- Mac
- 프로페셔널 스튜던트
- jQuery
- config-location
- elasticsearch
- mybatis
- oracle
- 베리 심플
- intellij
- maven
- docker
- Bash tab
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |