카테고리 없음

18주차 정리

jjon-jonny 2024. 8. 7. 15:20

** 환경 변수

 

-소개 

ㄴ 프로젝트 전반적으로 영향을 미치는 상수값을 의미함

ㄴ 쉽게 말해서 전역 변수임

 

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”{
토큰에 넣고 싶은 값( idx, role 등)
},
signature ( 비밀 키로 암호화된 Token )
 

-생성 과정

 
  1. Header 와 payload를 각각 String 으로 변환 ( 이때 각각을 A와 B 라고 함)
  2. 이 둘을 붙여서 A.B 의 형태로 만듬
  3. 위 2 번의 String 을 비밀 키로 암호화 함( 이때 이것을 C라고 함)
  4. 최종적으로 A.B.C의 형태가 Token이 됨
 
 
-검증 과정
  1. A.B.C 의 C 만 떼서 비밀키로 복호화 함
  2. 위 1번의 String A.B와 비교함
  3. 같다면 통과, 다르다면 조작
  4. 같다면, B만 떼서 Json 으로 변환한 다음에 값을 사용함
이번주 과제
  1. 기존에 세션으로 되어있던거 토큰으로 바꿔오기
 
 
미들웨어 이런거 다 체크하고 놓치는거 없이 꼼꼼하게 다 바꾸기
 
  1. refresh token 새로고침 토큰 이
왜 필요한지 생각하기
 
너무 어려우면 Oauth 권한을 다른곳에 위임하는 기법
 
둘중 하나 해와야함
 
로깅 api 정검 하기