본문 바로가기

IT정보

인증(Authentication) & 인가(Authorization) 완벽 정리

반응형

🔍 인증 vs 인가, 무엇이 다를까?

웹사이트에서 로그인을 하면, "이 사람이 누구인지 확인하는 과정(인증)"이 필요하고, 로그인한 사용자가 "이 기능을 사용할 수 있는 권한이 있는지 확인하는 과정(인가)"도 필요합니다.

개념의미예시

인증 (Authentication) 사용자가 누구인지 확인 ID/PW 입력, 소셜 로그인(OAuth)
인가 (Authorization) 사용자가 특정 기능을 사용할 권한이 있는지 확인 관리자 권한, 파일 접근 권한

🔑 인증(Authentication) - "너 누구야?"

인증은 **"이 사용자가 누구인지 확인하는 과정"**입니다. 사용자가 로그인할 때 ID/PW를 입력하거나 카카오, 구글 로그인(OAuth)을 이용하는 것이 이에 해당합니다.

 


인증 방식 종류

1️⃣ 기본 인증 (ID/PW): 가장 기본적인 인증 방식으로, 사용자가 ID와 비밀번호를 입력하여 로그인
2️⃣ 세션/쿠키 기반 인증: 서버에서 사용자를 인증한 후 세션을 생성하고, 요청마다 세션 ID를 포함하여 인증을 유지
3️⃣ 토큰 기반 인증 (JWT, OAuth): 한 번 로그인하면, 서버가 JWT(토큰)를 발급하여 요청마다 이를 사용해 인증


🔐 JWT (JSON Web Token) – "내 신분증을 보여줄게"

JWT란?

JWT는 JSON 형식의 토큰을 사용하여 인증을 수행하는 방식입니다. 로그인하면 서버가 토큰을 발급하고, 이후 요청마다 해당 토큰을 포함하여 사용자를 인증합니다.


📌 JWT 구조

구성 요소 설명
Header (헤더) 토큰 타입(JWT), 해싱 알고리즘
Payload (페이로드) 사용자 정보 (예: username: "new", role: "user")
Signature (서명) 토큰 위변조 방지

 

JWT의 장점

  • 서버에서 세션을 저장할 필요 없어 부담이 적음
  • 분산 시스템(마이크로서비스)에서 유용

JWT의 단점

  • 토큰이 탈취되면 보안 위험 발생
  • 토큰이 변경 불가능하므로, 유효기간이 지나면 다시 로그인 필요

🔓 인가(Authorization) - "너 이거 할 수 있어?"

사용자가 인증된 후, **"이 사람이 이 기능을 사용할 수 있는 권한이 있는지 확인하는 과정"**을 인가라고 합니다.

예를 들어, 일반 사용자는 게시글을 볼 수 있지만, 관리자만 게시글을 삭제할 수 있습니다.


인가 방식 종류

1️⃣ 역할(Role) 기반 인가 (RBAC, Role-Based Access Control) :  역할을 부여하여 권한을 관리

2️⃣ 권한(Permission) 기반 인가 : 특정 기능(읽기, 쓰기, 수정 등)에 대한 권한을 부여하는 방식

3️⃣ OAuth 기반 인가 : 사용자가 로그인할 때, "이 앱이 내 정보에 접근해도 괜찮은지?"를 허용하는 방식


🌍 OAuth – "소셜 로그인 (카카오, 구글, 네이버)"

OAuth는 **"다른 서비스의 인증을 이용해 로그인을 대신하는 방식"**입니다. 카카오 로그인을 사용하면 카카오가 내 정보를 대신 인증해주는 것과 같습니다.


📌 OAuth 인증 과정
1️⃣ 사용자가 "카카오 로그인"을 클릭
2️⃣ 카카오가 사용자에게 "이 앱이 내 정보를 사용해도 되는지?" 물어봄
3️⃣ 사용자가 동의하면, 카카오가 앱에게 **Access Token(엑세스 토큰)**을 발급
4️⃣ 앱은 이 토큰을 사용해 사용자의 정보를 요청하고 로그인 처리


OAuth의 장점

  • 사용자는 여러 웹사이트에서 동일한 계정(구글, 카카오 등)으로 로그인 가능
  • 개발자는 직접 로그인 기능을 구현할 필요 없이 OAuth로 쉽게 인증 가능

OAuth의 단점

  • 타사의 인증 서비스(구글, 카카오)가 다운되면 로그인 불가능
  • 보안 설정(OAuth Scopes)을 잘못하면 개인정보 유출 위험

🎯 정리 – 인증 & 인가 차이점

구분 인증 (Authentication) 인가 (Authorization)
의미 사용자가 누구인지 확인 사용자가 어떤 권한이 있는지 확인
예시 ID/PW 로그인, 카카오 로그인 관리자 권한, 파일 접근 권한
관련 기술 JWT, OAuth, 세션/쿠키 RBAC(역할 기반 접근 제어), OAuth 범위

✅ 마무리

오늘은 인증 & 인가의 개념과 JWT, OAuth에 대해 쉽게 정리해봤습니다!
이제 웹 개발에서 로그인과 권한 관리를 어떻게 처리하는지 더 잘 이해할 수 있겠죠? 😃

 

 

📢 더 궁금한 점이 있다면 댓글로 질문해주세요! 🚀

반응형