🔍 인증 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에 대해 쉽게 정리해봤습니다!
이제 웹 개발에서 로그인과 권한 관리를 어떻게 처리하는지 더 잘 이해할 수 있겠죠? 😃
📢 더 궁금한 점이 있다면 댓글로 질문해주세요! 🚀
'IT정보' 카테고리의 다른 글
OSI 7계층 완벽 정리 – IT개발자가 꼭 알아야 할 네트워크 기초 (0) | 2025.03.29 |
---|---|
데이터 모델링 기초 - 쉽게 이해하는 개념 정리 (2) | 2025.03.28 |
동기와 비동기의 차이, 운영체제 관점에서 쉽게 이해하기 (2) | 2025.03.27 |
TCP/IP 완벽 가이드 - 인터넷의 핵심 원리 쉽게 이해하기 (2) | 2025.03.26 |
SQL 기본 개념 완벽 정리 – SELECT, JOIN, GROUP BY, 서브쿼리 (2) | 2025.03.24 |
HTML과 CSS로 간단한 로그인 폼 만들기 (3) | 2025.03.23 |
HTTP 프로토콜 완벽 가이드! 신입 개발자를 위한 쉬운 설명 📖 (0) | 2025.03.22 |
접근 권한: root와 admin 권한을 이해하는 법 (2) | 2025.03.20 |