👩🏻💻 Today Learn
💡 알게된 내용
인증(Authentication) vs 인가(Authorization)
인증?
- 서비스를 이용하려는 유저가 회원인지 아닌지 신원을 확인하는 절차
- 보통 어떤 인증요소를 증거로 자신을 증명함
- ex) 온라인에서는 ID와 패스워드를 입력하는 행위가 인증이 될 수 있음
- ex) 실생활에서는 공공기관에서 신원확인 시 신분증을 보여주는 것을 생각해볼 수 있음
인가?
- 어떤 개체가 리소스에 접근할 수 있는지 또는 동작을 수행할 수 있는지 검증하는 것(접근 권한을 얻는 일)
- ex) 현실에서는 비행기 탑승 시 여권과 함께 가져가는 비행기 티켓을 생각해볼 수 있음(여권으로 신분확인 하는 것 말고 티켓이 있어야 탑승이 가능하기 때문)
- 인터넷 기반 앱에서는 보통
토큰
이라는 것을 사용
- 유저는 자신의 인가 세부사항을 가진 토큰을 통해 서버에 인증받음
- 서버는 유저의 토큰을 보고 권한이 있는지 판단
🔎 인증은 인가로 이어지지만 인가는 인증으로 이어지지 않는다!
http 프로토콜 통신의 특징
모든 형태의 데이터를 전송할 때 HTTP를 사용한다.
HTTP의 특징
- Client-Server 구조
- 무상태성(Stateless)
- 비연결성(Connectionless)
- 단순/확장 가능
1. Client-Server 구조
- 각각의
Server
와 Client
는 독립되어 있음
- Client는 Server에
요청(Request)
을 보내고 응답이 올 때까지 대기
- Server는 Client에서 받은
요청(Request)
에 대한 결과를 만들어 응답을 하는 것
Client-Server
구조는 Request-Response
구조와 같은 것
- Server에서 비즈니스 로직과 데이터를 Client에 독립적으로 처리할 수 있도록 만든 구조
2. 무상태성(Stateless)
Server
는 Client
의 상태를 기억하지 않음
- 각 요청마다 Server에서 요구하는 모든 상태 정보를 담아서 요청해야함
- 상태값은 매 요청마다
Client
가 가지고 오기 때문에 Server는 Client의 상태를 별도로 기억할 필요없이 주문받은 대로 응답해줌
3. 비연결성(Connectionless)
- Server와 Client는 연결되어 있지 않아서 서버 입장에서는 매번 새로운 요청임
- 비연결성으로 인해 최소한의 서버 자원으로 서버를 유지할 수 있게 해줌
4. 단순/확장 가능
- 클라이언트에서 요청이 발생하면 TCP의 3-way handshake를 통해 연결
- 서버에서 결과를 처리하여 응답을 받으면 4-way handshake를 통해 연결을 해제
- 클라이언트의 상태를 저장하지 않는(stateless) 단순한 과정을 거치기 때문에 HTTP가 이렇게까지 성장할 수 있었음
✍🏻 회고
새롭게 배운 내용들을 이해하기 어려워서 자료 찾아가며 TIL로 적어보았는데 여전히 어렵다..ㅎㅎ 그래도 반복적으로 읽으면서 어떤 내용인지, 의미인지 한발자국 더 다가가게 되었다.