오늘은 하기 내용에 대해 강의를 들었지만.........😔😔😔
- 웹의 인증 및 인가의 개념을 이해한다.
- 스프링 시큐리티를 이용해 폼 로그인 기능을 구현한다.
- 스프링 시큐리티 OAuth2 를 이용해 소셜 로그인 기능을 구현한다.
4. JWT 로그인 기능을 구현한다. -> 아직 무리임.
내용이 너무 방대해서 머릿속에 아직 들어오지 않은 느낌이다.
일단은 정리해보겠다ㅠㅠ
인증 vs 인가
- 인증(authentication): 사용자 신원을 확인하는 행위
ex.회사출입을 위한 출입증 혹은 생체정보 인식
- 인가(authorization): 사용자 권한을 확인하는 행위
ex. 방문자-> 회의실만 접근가능, 직원 -> 회의실, 사무실 접근가능, 관리자 -> 회의실,사무실,서버실,물품보관실 접근 가능
웹에서의 인증 및 인가
- 인증: 로그인을 통해 본인임을 확인 (주로, 아이디와 패스워드 이용)
- 인가: 주로 역할에 따른 사용 권한 관리
쿠키와 세션
- 쿠키와 세션 모두 HTTP에 상태 정보를 유지하기위해 사용됨. 즉, 쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있음.
1. 쿠키
: 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
- 구성요소
- Name (이름): 쿠키를 구별하는 데 사용되는 키 (중복될 수 없음)
- Value (값): 쿠키의 값
- Domain (도메인): 쿠키가 저장된 도메인
- Path (경로): 쿠키가 사용되는 경로
- Expires (만료기한): 쿠키의 만료기한 (만료기한 지나면 삭제됩니다.)
- 세션
- 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
- 서버에서 클라이언트 별로 유일무이한 '세션 ID' 를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
- 서버에서 생성한 '세션 ID' 는 클라이언트의 쿠키값('세션 쿠키' 라고 부름)으로 저장되어 클라이언트 식별에 사용됨
- 세션 동작 방식
(그냥 참고하려고 올리는 api설계도)
'Spring Security' 프레임워크
: spring security프레임워크는 스프링 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해줌으로써 개발의 수고를 덜어줌.
ex.user테이블
- 관리자 회원 가입 인가 방법
- '관리자 가입 토큰' 입력 필요: 랜덤하게 생성된 토큰 사용
- 회원 가입 요청 처리
- 회원 중복 Id 확인
- 관리자 가입 요청에 대해서는 '관리자 가입 토큰' 인가
암호화 후 패스워드 저장이 필요.
- 평문 → (암호화 알고리즘) → 암호문
- "nobodynobody" → "2a$10.."
일방향' 암호 알고리즘
암호화: 평문 → (암호화 알고리즘) → 암호문
복호화: 불가 (암호문 → (암호화 알고리즘) → 평문)
spring security 사용시, '권고'하고 있는 'BCrypt 해시함수'를 사용해 패스워드를 암호화하여 DB 에 저장
로그인/로그아웃 기능 구현
OAuth 란?
:OAuth는 개방형 표준으로, 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단. 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜. ex.카카오, 구글, 페이스북, 네이버 등
마지막으로, JWT는.... 아직 이해하기 어려우므로.....OAuth가 익숙해지면 다시 공부하겠다ㅎㅎㅎㅎ