윤준영, 더불어 성장하는 개발자    카테고리    태그

7주차 강의 복습

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는 인증처리를 하는 필터로 크게 인증 전과 인증 후의 작업들을 관리함
  • UsernamePasswordAuthenticationFilterAuthenticationManager에 인증정보를 넘기면 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

6주차 강의 복습

WebSocket에 대한 고찰

Comments powered by Disqus.

바로가기