반응형
이제 인증의 꽃이자 끝판왕인 OAuth 2.0에 도달하셨군요! 🚀
OAuth 2.0은 쉽게 말해 "내 소중한 비밀번호를 알려주지 않고도, 남의 집(구글, 카카오)에 있는 내 정보를 안전하게 빌려 쓸 수 있게 해주는 권한 대여 표준"입니다. 아키텍트의 시선에서 이 복잡한 흐름을 아주 명쾌하게 쪼개 드릴게요.

1. OAuth 2.0의 핵심 등장인물 (4인방)
용어가 조금 낯설 수 있지만, 호텔 비유를 곁들이면 아주 쉽습니다.
- Resource Owner (자원 소유자): 바로 XX님입니다. 구글/카카오 계정의 주인이지요.
- Client (클라이언트): XX님이 이용하려는 '우리 서비스'입니다. (예: XX님이 만든 데이터 분석 사이트)
- Authorization Server (권한 서버): "이 사람 XX님 맞네!"라고 확인해주고 권한을 주는 구글/카카오의 인증 서버입니다.
- Resource Server (자원 서버): XX님의 실제 정보(이메일, 이름)가 들어있는 구글/카카오의 데이터 서버입니다.
2. 왜 OAuth를 쓸까? (보안의 핵심)
만약 OAuth가 없다면, XX님은 우리 사이트에 '구글 아이디와 비밀번호'를 직접 입력해야 합니다.
- 문제점: 만약 우리 사이트가 해킹당하면 XX님의 구글 비번이 털립니다!
- 해결책: 비밀번호 대신 '제한된 권한이 담긴 열쇠(Access Token)'만 빌려주는 방식을 선택한 것입니다.
3. OAuth 2.0의 작동 흐름 (Authorization Code Grant 방식)
가장 많이 쓰이고 안전한 방식을 기준으로 설명해 드릴게요.
- 로그인 요청: XX님이 우리 사이트에서 [구글로 로그인] 버튼을 누릅니다.
- 권한 요청: 우리 사이트가 XX님을 구글 로그인 페이지로 보냅니다. "XX님, 이 사이트가 XX님 이메일 좀 봐도 될까요?"라고 물어봅니다.
- 인증 및 승인: XX님이 구글에 로그인을 하고 '허용'을 누릅니다.
- 임시 코드 발급: 구글이 우리 사이트에게 '임시 코드(Authorization Code)'를 줍니다. (이건 아직 진짜 열쇠가 아니에요!)
- 열쇠 교환: 우리 사이트가 이 임시 코드를 들고 구글 권한 서버로 달려가서 "진짜 열쇠(Access Token)"로 바꿉니다.
- 왜 번거롭게 코드를 거칠까요? 브라우저를 통해 열쇠가 직접 전달되면 해킹 위험이 크기 때문에, 서버끼리 안전하게 열쇠를 주고받는 과정입니다.
- 데이터 접근: 이제 우리 사이트는 이 Access Token을 보여주며 구글 자원 서버에서 XX님의 이메일을 받아옵니다.
4. Access Token vs Refresh Token
OAuth를 공부하다 보면 이 두 단어가 꼭 나옵니다.
- Access Token (출입증): 실제 정보를 가져올 때 쓰는 열쇠입니다. 수명이 짧습니다 (보통 1시간).
- Refresh Token (출급증 재발급권): Access Token이 만료되었을 때, XX님께 다시 로그인하라고 귀찮게 하지 않고 서버가 몰래 새 열쇠를 받아올 때 쓰는 '비밀 열쇠'입니다. 수명이 깁니다 (며칠~몇 달).
📊 JWT와 OAuth는 무슨 관계인가요?
아까 배운 JWT와 헷갈리실 수 있는데 이렇게 정리하세요!
- OAuth 2.0: 권한을 주고받는 '전체적인 과정(프로토콜)'입니다.
- JWT: 그 과정에서 주고받는 '열쇠(Token)의 형식' 중 하나입니다.
- 즉, "OAuth 2.0이라는 규칙을 지키면서, 열쇠 모양은 JWT로 만들자!"라고 설계하는 경우가 대다수입니다.
🔗 다음 공부의 연결고리
이제 보안의 거대한 산맥들을 다 넘으셨습니다! 그런데 말이죠...
"로그인도 안전하고, 열쇠도 안전한데... 만약 내 아이디와 비번을 누가 어깨 너머로 훔쳐보고 로그인하면 어떡해?"
이 마지막 방어선이 바로 [MFA (다중 요소 인증)]입니다. 그리고 회사에서 수많은 OAuth 시스템을 하나로 묶어 관리하는 것이 [SSO]이고요.
OAuth 2.0의 "열쇠 대여 방식"이 이해되셨나요? 이해되셨다면 이제 인증의 최종 방어선 [MFA / SSO]로 마무리하러 가볼까요?
반응형
'1. 개발 > 1.5. IT 용어 정리' 카테고리의 다른 글
| Access Token vs Refresh Token (1) | 2026.01.25 |
|---|---|
| MFA vs SSO (0) | 2026.01.25 |
| Session 과 Cookie (0) | 2026.01.24 |
| JWT (JSON Web Token) (0) | 2026.01.24 |
| SSL vs TLS (0) | 2026.01.24 |