18주차 정리
** 환경 변수
-소개
ㄴ 프로젝트 전반적으로 영향을 미치는 상수값을 의미함
ㄴ 쉽게 말해서 전역 변수임
1. 여러 곳에 설정되는 값들
ㄴ product 모드 & develop 모드
ㄴ SQL 문 중에 특정 개수의 값만 반환해야하는 경우
ㄴ 권한에 대한 key 값 등
Role_admin = 1
2. 감춰야되는 민감한 값 (== git hub에 올라가면 안되는 값)
ㄴ 데이터베이스 연결 정보
ㄴ 암호화에 사용되는 string 값
-dotenv 패키지
ㄴ 환경변수 기능을 손쉽게 제공해주는 패키지
ㄴ 무조건 환경변수 파일 이름을 .env 라고 지어야 함
** Authentication (Auth)
-소개
ㄴ 번역하면 인증
ㄴ API 를 요청한 사람이 누구인지 검증하는 기법
- 필요성
ㄴ 로그인 권한이 필요할 때
ㄴ 관리자 권한이 필요할 때 등
ㄴ 아무튼 API 를 요청하는 사람이 누구인지 등이 항상 필요함
- 현시점
ㄴ Session 을 이용해서 이 기능을 구현하고 있음
ㄴ 하지만 , Auth 기법은 종류가 많음
- Stateless VS Stateful
ㄴ Auth 랑은 관련 없고 , CS 지식
ㄴ Stateless 는 컴퓨터가 동작할 때 그 동작의 흔적을 남기지 않은 방식
ㄴ Stateful 은 컴퓨터가 동작을 할 때 그 동작의 흔적을 남기는 방식
-Auth 기법의 종류
1. http auth
ㄴ http 통신을 할 때 계정의 idx를 보내주는 방식
ㄴ 조작이 가능함
ㄴ 개발이 불편함
ㄴ 웹 기준으로 새로고침 하면 날아감
2. Cookie Auth
ㄴ 계정의 idx를 Cookie 에 저장하고 사용하는 방식
ㄴ Cookie 의 장점은 브라우저에 저장되며, http 통신을 할 때 자동으로 같이 전송됨
ㄴ 조작이 가능함
3. Session- Cookie Auth
ㄴ 계정의 idx를 Session에 저장하고, Session 의 idx를 Cookie 에 저장하는 방식
ㄴ Stateful 방식이다
ㄴ 서버의 메모리 사양 요구치가 높아진다.
4. Token Auth
ㄴ Stateless 방식
ㄴ 프론트엔드에 저장을 할건데, 조작이 안되게 해야한다는게 관건
ㄴ 여러 Token 기법들이 존재함.
ㄴ 이 Token 안에 계정 idx가 저장이 됨(그러면서 조작도 막음)
ㄴ Session-Cookie Auth 에 비교해서 메모리 요구치가 낮음
-쓰임 차이
ㄴ 그러면 무조건 Token 이 좋은거 아님?
ㄴ 일부로 Session 을 남겨야 할 때가 있음
예시 ) 로그인에 대해서 제한 조건을 둘때
예시 ) 실시간 벤 , 넷플릭스 4인 결제, 동시 로그인 제한 등
** JWT
정의
ㄴ 여러 Token 기법 중 한 종류 (Json web token 의 약자 )
ㄴ json 기반으로 구성되어 있음(매우 편함)
ㄴ 전세계 web 표준으로 선정되어 있음
- 구조
-생성 과정
- Header 와 payload를 각각 String 으로 변환 ( 이때 각각을 A와 B 라고 함)
- 이 둘을 붙여서 A.B 의 형태로 만듬
- 위 2 번의 String 을 비밀 키로 암호화 함( 이때 이것을 C라고 함)
- 최종적으로 A.B.C의 형태가 Token이 됨
- A.B.C 의 C 만 떼서 비밀키로 복호화 함
- 위 1번의 String A.B와 비교함
- 같다면 통과, 다르다면 조작
- 같다면, B만 떼서 Json 으로 변환한 다음에 값을 사용함
- 기존에 세션으로 되어있던거 토큰으로 바꿔오기
- refresh token 새로고침 토큰 이