ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인증(Authentication), 인가(Authorization)
    CS 2024. 8. 1. 21:04

    시작하며

    더보기

      이번주는 JWT에 대해서 학습하였다. 아직까지는 대략적인 이해만 됐을 뿐, 참고자료 없이 혼자 구현하진 못하는 상황이다. 단계별로 나아가면서 JWT에 대한 정리까지 완료할 예정이다.

      오늘은 그 첫 번째인데, 인증(Authentication)과 인가(Authorization)의 개념부터 정리해 보겠다.

    목차

    • 1. 인증과 인가
    • 2. 웹 애플리케이션 인증의 특수성

     

    1. 인증과 인가

    - 인증 : 로그인 등과 같이 실제 그 유저가 맞는지를 확인하는 절차이다.

     

    - 인가 : 인가는 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념이다.

     

    2. 웹 애플리케이션 인증의 특수성

    [비연결성] - Connectionless

      웹 애플리케이션은 주로 HTTP/HTTPS 프로토콜을 사용하며, 이 프로토콜은 본질적으로 비연결성이라는 특징을 가지고 있다. 즉, 클라이언트와 서버 간의 요청-응답이 완료되면 연결이 끊어진다. 이렇기 때문에 각 요청은 독립적으로 처리되어, 한 요청이 실패하더라도 다른 요청에 영향을 미치지 않는다.

      또한, 비연결성 덕분에 서버는 각 클라이언트와 지속적인 연결을 유지할 필요가 없으므로. 자원을 효율적으로 관리할 수 있다.

     

    [무상태] - Stateless

      HTTP 프로토콜은 무상태 프로토콜이다. 즉 서버는 각 요청 간에 클라이언트의 상태를 유지하지 않는다. 모든 요청은 자체적으로 완전한 정보를 포함해야 하며, 서버는 이전 요청의 상태에 의존하지 않고 요청을 처리한다. 각 요청이 독립적으로 처리되어 여러 서버에 분산시켜 처리할 수도 있다. 

     

     

     

      위 특징들을 잘 읽어보면 주어가 "서버"이다. 즉, 서버는 클라이언트의 상태를 기억하지 않고, 각 요청을 독립적으로 처리하며, 이를 통해 서버 리소스를 절약하고 확장성과 신뢰성을 높인다. 

     

     

      그런데 여기서 의문이 들 것이다. 우리는 인터넷을 사용할 때 이전의 정보들이 잘 있는 것처럼(상태를 유지하는 것처럼) 연속성 있게 잘 사용해 왔다. 어떻게 된 것일까?

      이러한 무상태성을 유지하면서도 클라이언트의 상태를 관리하기 위해 쿠키, 토큰, 세션 스토리지 등을 활용한다. 예를 들어, 클라이언트는 인증 토큰을 요청에 포함하여 서버에 자신의 상태를 전달한다. 사용자 인증, 세션 등을 관리할 수 있는 이유이자 쿠키, 토큰, 세션이 필요한 이유이다.

     

    마치며

    더보기

      JWT의 흐름을 제대로 파악하기 필요한 개념들 중 인증과 인가, 웹 애플리케이션 인증의 특수성(비연결성과 무상태)에 대해 간략하게 정리해 보았다. 마지막에는 쿠키, 토큰, 세션 등이 필요한 이유에 대해서 언급하였는데, 다음 글에서 쿠키-세션 방식의 인증, JWT 기반 인증 방식 흐름에 대해서 좀 더 구체적으로 정리해보겠다.

Designed by Tistory.