본문 바로가기
메모/Network

OSI 7계층,세션 기반 인증/토큰 기반 인증,JWT/Refresh/Access/Token,OAuth

by 구너드 2023. 9. 24.

OSI 7계층

 

OSI 7계층이란 네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준화 기구(ISO)에서 정의한 네트워크 표준 모델.

 

7계층으로 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있을 뿐만 아니라 흐름을 한 눈에 알아보고, 쉬운 이해를 위해 분리. 또 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고 이상이 생긴 단계만 수정 작업 가능.

 

1계층은 물리 계층으로 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송하는 물리적인 장비로 데이터 전기적인 신호(0,1)로 변환해서 주고 받는 기능만 가능.

 

2계층은 데이터 링크 계층으로 물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 통신의 흐름을 관리. 프레임에 물리적 주소를 부여하고 에러 검출, 재전송, 흐름제어를 수행.

 

3계층은 네트워크 계층으로 데이터를 목적지까지 가장 안전하고 빠르게 전달. 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층.

 

4계층은 전송 계층으로 통신을 활성화하기 위한 계층이며 TCP 프로토콜을 이용하며, 포트를 열어서 응용프로그램들이 전송. 두 지점(시스템)간의 신뢰성 있는 데이터를 주고 받게 해주는 역할.

 

5계층은 세션 계층으로 데이터가 통신하기 위한 논리적인 연결을 하는 계층으로 주 지점 간의 프로세스 및 통신하는 호스트 간의 연결을 유지.

 

6계층은 표현 계층으로 전송하는 데이터의 표현 방식을 결정하는 계층. 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어줌

 

7계층은 응용 계층으로 최종 목적지이며, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행. HTTP, FTP, SMTP, POP3, IMAP, Telnet 등과 같은 프로토콜이 있다.


세션 기반 인증과 토큰 기반 인증

 

세션 기반 인증은 서버에 세션 정보를 저장하여 사용자를 인증하는 방식.

토큰 기반 인증은 클라이언트에 토큰을 저장하고 관리하여 인증하는 방식.

 

세션 기반 인증은 서버 측에서 세션을 관리하고 보안성이 높지만, 서버 부담과 확장성의 한계 존재.

반면에 토큰 기반 인증은 클라이언트 측에서 토큰을 관리하여 서버 부담이 줄어들고 확장성이 좋지만, 보안에 주의.

웹 애플리케이션의 요구사항과 보안성에 따라 선택.


JWT, Refresh, Access Token

 

JWT : 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미. JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 담아서 서버가 클라이언트를 식별하는 방식. 

JSON 데이터를 Base64 URL-safe Encode 를 통해 인코딩하여 직렬화하며, 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 존재. 따라서 사용자가 JWT 를 서버로 전송하면 서버는 서명을 검증하는 과정을 거치게 되며 검증이 완료되면 요청한 응답을 반환.

 

Refresh Token : 긴 유효기간을 가지면서, Access Token이 만료됐을 때 새로 재발급. 따라서 만료된 Access Token을 서버에 보내면, 서버는 같이 보내진 Refresh Token을 DB에 있는 것과 비교해서 일치하면 다시 Access Token을 재발급.

 

Access Token : 서버에 저장되지 않고 토큰 자체로 검증을 하며 사용자 권한을 인증. 따라서 Access Token이 탈취되면 토큰이 만료되기 전까지 토큰을 획득한 사람은 누구나 권한 접근이 가능해지기 때문에 Refresh Token을 이용하여 이러한 문제를 방지.


OAuth

 

OAuth는 웹 및 애플리케이션에서 사용자 데이터에 대한 안전한 접근을 관리하기 위한 개방형 표준 프로토콜.

주로 서드파티 애플리케이션이 사용자의 인증 정보 없이도 특정 서비스에 접근할 수 있도록 허용하는 프레임워크로 사용.

 

OAuth는 사용자의 인증 정보를 공유하지 않고도 권한 부여 및 인증을 처리하는데 사용.

1. 인증서버 : 사용자 인증 및 권한 부여를 관리하는 서버. 이 서버는 사용자의 동의를 얻어 토큰을 발급하고 관리.

2. 리소스 서버 : 사용자의 데이터를 관리하고 보호하는 서버. OAuth를 사용하여 인증 및 권한 검사를 수행하여 안전하게 데이터를 제공.

3. 클라이언트 : 서드파티 애플리케이션 또는 서비스. 사용자의 데이터에 접근하려는 대상.

'메모 > Network' 카테고리의 다른 글

RestAPI  (0) 2023.10.15
GET/POST, TCP/UDP, http(s)  (1) 2023.10.09
대규모 트래픽, AWS S3/EC2  (1) 2023.10.05
CORS, 브라우저 작동방식, 쿠키/세션  (0) 2023.09.22