Spring(심화)-2주차

Jonguk Kim·2021년 11월 23일
0

웹의 인증 및 인가

  • 인증 (Authentication): 사용자 신원을 확인하는 행위
    • 로그인을 통해 본인임을 확인 (주로, 아이디와 패스워드 이용)
    • 회사 출입을 위한 출입증 확인 혹은 생체정보 (지문, 홍채) 인식
  • 인가 (Authorization): 사용자 권한을 확인하는 행위
    • 주로 역할에 따른 사용 권한 관리 (카페 등급)
    • 회사 건물 내 접근 권한 관리 (방문자 → 회의실만 접근 가능)

쿠키와 세션

  • HTTP 는 상태를 저장하지 않음
  • 쿠키와 세션 모두 HTTP 에 상태 정보를 유지 (쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가)
  1. 쿠키
  • 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
  1. 세션
  • 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
  • 서버에서 클라이언트 별로 유일무이한 '세션 ID' 를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
  • 서버에서 생성한 '세션 ID' 는 클라이언트의 쿠키값('세션 쿠키' 라고 부름)으로 저장되어 클라이언트 식별에 사용됨

패스워드 암호화 적용

  1. 사용자가 로그인을 위해 "아이디, 패스워드 (평문)" 입력 → 서버에 로그인 요청
    1. 서버에서 패스워드 (평문) 을 암호화
      1. 평문 → (암호화 알고리즘) → 암호문
  2. DB 에 저장된 "아이디, 패스워드 (암호문)"과 일치 여부 확인
  • BCrypt 해시함수
@Bean
public BCryptPasswordEncoder encodePassword() {
    return new BCryptPasswordEncoder();
}

[암호화 알고리즘 사용용도]

(1) 회원 가입 시 패스워드를 암호화하여 저장

  • 직접 구현해 줘야 함

(2) 로그인 인증 시 사용

  • 스프링 시큐리티 자동으로 가져다 사용
  • 로그인 처리 시
    • 사용자가 입력한 패스워드 평문을 암호화
    • 암호화된 DB 의 패스워드와 비교

로그인, 로그아웃 기능 구현

  • Client 의 요청은 모두 Spring Security 를 거침

  • Spring Security 역할

    1. 인증/인가
      1. 성공 시: Controller 로 Client 요청 전달
        1. Client 요청 + 사용자 정보 (UserDetails)
      2. 실패 시: Controller 로 Client 요청 전달되지 않음
        1. Client 에게 Error Response 보냄
  • 로그인 처리 과정

profile
개발일지

0개의 댓글