-
인증(Authentication), 인가(Authorization)CS 2024. 8. 1. 21:04
시작하며
더보기이번주는 JWT에 대해서 학습하였다. 아직까지는 대략적인 이해만 됐을 뿐, 참고자료 없이 혼자 구현하진 못하는 상황이다. 단계별로 나아가면서 JWT에 대한 정리까지 완료할 예정이다.
오늘은 그 첫 번째인데, 인증(Authentication)과 인가(Authorization)의 개념부터 정리해 보겠다.
목차
- 1. 인증과 인가
- 2. 웹 애플리케이션 인증의 특수성
1. 인증과 인가
- 인증 : 로그인 등과 같이 실제 그 유저가 맞는지를 확인하는 절차이다.
- 인가 : 인가는 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념이다.
2. 웹 애플리케이션 인증의 특수성
[비연결성] - Connectionless
웹 애플리케이션은 주로 HTTP/HTTPS 프로토콜을 사용하며, 이 프로토콜은 본질적으로 비연결성이라는 특징을 가지고 있다. 즉, 클라이언트와 서버 간의 요청-응답이 완료되면 연결이 끊어진다. 이렇기 때문에 각 요청은 독립적으로 처리되어, 한 요청이 실패하더라도 다른 요청에 영향을 미치지 않는다.
또한, 비연결성 덕분에 서버는 각 클라이언트와 지속적인 연결을 유지할 필요가 없으므로. 자원을 효율적으로 관리할 수 있다.
[무상태] - Stateless
HTTP 프로토콜은 무상태 프로토콜이다. 즉 서버는 각 요청 간에 클라이언트의 상태를 유지하지 않는다. 모든 요청은 자체적으로 완전한 정보를 포함해야 하며, 서버는 이전 요청의 상태에 의존하지 않고 요청을 처리한다. 각 요청이 독립적으로 처리되어 여러 서버에 분산시켜 처리할 수도 있다.
위 특징들을 잘 읽어보면 주어가 "서버"이다. 즉, 서버는 클라이언트의 상태를 기억하지 않고, 각 요청을 독립적으로 처리하며, 이를 통해 서버 리소스를 절약하고 확장성과 신뢰성을 높인다.
그런데 여기서 의문이 들 것이다. 우리는 인터넷을 사용할 때 이전의 정보들이 잘 있는 것처럼(상태를 유지하는 것처럼) 연속성 있게 잘 사용해 왔다. 어떻게 된 것일까?
이러한 무상태성을 유지하면서도 클라이언트의 상태를 관리하기 위해 쿠키, 토큰, 세션 스토리지 등을 활용한다. 예를 들어, 클라이언트는 인증 토큰을 요청에 포함하여 서버에 자신의 상태를 전달한다. 사용자 인증, 세션 등을 관리할 수 있는 이유이자 쿠키, 토큰, 세션이 필요한 이유이다.
마치며
더보기JWT의 흐름을 제대로 파악하기 필요한 개념들 중 인증과 인가, 웹 애플리케이션 인증의 특수성(비연결성과 무상태)에 대해 간략하게 정리해 보았다. 마지막에는 쿠키, 토큰, 세션 등이 필요한 이유에 대해서 언급하였는데, 다음 글에서 쿠키-세션 방식의 인증, JWT 기반 인증 방식 흐름에 대해서 좀 더 구체적으로 정리해보겠다.
'CS' 카테고리의 다른 글
자료구조 - Array & LinkedList (1) 2024.10.29 모놀리식 아키텍처와 마이크로 서비스 아키텍처 (0) 2024.08.07 웹 애플리케이션의 인증 방식 (0) 2024.08.02