Spring Security
-
스프링 기반 애플리케이션의 인증과 권한을 담당하는 하위 프레임워크 - 관리자 및 사용자 계정 추가, 권한 추가, DB 연동이 복잡하다는 문제점이 있음
build.gradle
의 dependencies에 아래 라인을 추가한뒤 동기화하여 적용 가능1 2 3 4 5 6
dependencies { // ... implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.1.RELEASE' // ... }
- 적용후 사이트를 들어가면 아래와 같은 화면 뜸
-
Spring Security는 기본적으로 인증되지 않은 사용자는 서비스를 사용할 수 없게끔 되어 있음 - 방문한 사용자가 사이트를 원활히 이용하기 위해서는 시큐리티 아래의 파일을 생성해줘야 함
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
package com.likelion.likelion230626; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @Configuration // 환결설정을 의미하는 어노테이션 @EnableWebSecurity // 모든 요청 URL이 스프링 시큐리티의 제어를 받도록 만드는 어노테이션 public class SecurityConfig { // 내부적으로 URL 필터 적용 @Bean SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests().requestMatchers( new AntPathRequestMatcher("/**")).permitAll() ; return http.build(); // 모든 인증되지 않은 요청을 허락 } }
-
Spring Security의 인증 과정
- 사용자가
GET /home
요청을 할 때 만약 사용자의 인증을 확인할 수 없으면 로그인 페이지로 리다이렉트 - 사용자가 로그인 페이지에서 username과 password를 입력후
POST
메서드로 데이터를 전송하면, 해당 유저에 대한 인증 토큰을 생성하고 저장 - 다시 사용자가
GET /home
요청을 하면 저장된 인증 토큰으로 접근 허가
UsernamePasswordAuthenticationFilter
는 인증처리를 하는 필터로 크게 인증 전과 인증 후의 작업들을 관리함UsernamePasswordAuthenticationFilter
는AuthenticationManager
에 인증정보를 넘기면AuthenticationProvider
을 통해 인증 성공 유무를 확인함- 성공한 인증객체를 가지고
SecurityContext
에 저장후, 핸들러를 통해 인증 성공 후의 후속 작업들을 처리- 이때
SecurityContext
는 전역적으로 인증객체를 참조할 수 있도록 설계됨
- 이때
Spring Security의 세션 보호
동시 세션 제어
-
같은 사용자 계정이 가질수 있는 최대 세션 수를 초과하는 경우에 대한 두가지의 처리방법을 제공
세션 고정 보호
- 공격자가 먼저 세션쿠키를 얻은 후 해당 쿠키를 사용자에게 전달
- 사용자가 받은 세션을 가지고 로그인 시도하고 로그인이 성공하면
공격자는 해당 세션쿠키를 가지고 사용자의 정보 탈취가능
AWS
-
아마존 닷컴에서 개발한 클라우드 컴퓨팅 플랫폼 - 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스 제공
Amazon EC2
- 가상 인스턴스의 크기를 유동적으로 조정이 가능한 컴퓨팅 파워
- 컴퓨팅 리소스를 고객이 완전히 제어할 수 있음
서버 내 배포
JDK 설치
1
2
3
sudo apt update
sudo apt install openjdk-17-jdk
java -version # java 설치 확인
네트워크 상태 확인
1
2
sudo apt install net-tools
netstat -nlpt # 네트워크 상태 확인
아파치 설치 및 .jar파일 실행
1
2
sudo apt install apache2
nohup java -jar test.jar
Comments powered by Disqus.