소셜로그인, 즉 구글, 카카오톡, 페이스북 같은 계정으로 한 방에 로그인 되는 그 기술이 바로 OAuth이다.
근데 단순히 이게 로그인만 도와주는 게 아니라, 앱들이 사용자 정보를 안전하게 주고받을 수 있도록 도와주는 프로토콜이라는 것이다!
이 OAuth가 뭔지, 어떻게 동작하는지 간단하게 정리해보았다.
🎯 OAuth의 기본 개념
OAuth는 쉽게 말해서 내 비밀번호를 안 주고도, 다른 서비스가 내 정보를 사용할 수 있게 해주는 시스템이다.
예전 방식이라면 앱에 내 구글 계정 아이디랑 비밀번호를 줘야했는데, 이렇게 되면 보안이 완전 구멍이다.
OAuth는 이런 문제를 해결하기 위해 토큰이란걸 사용한다.
즉, 앱이 내 비밀번호를 몰라도, 구글이 준 사용 권한이 담긴 토큰만 있으면 필요한 정보에 접근할 수 있다.
핵심은? 🛡️토큰만 있으면, 비밀번호 없이도 안전하게 인증할 수 있다!!🛡️
🏃♂️ OAuth 등장인물
- 리소스 소유자 (Resource Owner) 🧑💻
: 쉽게 말해서, 사용자이다. 내 데이터를 제공할지 결정하는 사람. 바로 나 - 클라이언트 (Client) 📱
: 내 데이터를 사용하려는 앱. 예를 들어, 내 구글 캘린더 데이터를 가져오려는 TO-DO List앱 같은거 - 인증 서버 (Authorization Server) 🔐
: 사용자의 인증을 담당하는 곳. "진짜 이사람 본인 맞아?"를 확인 하는 곳 - 리소스 서버 (Resource Server) 📂
: 실제 데이터를 가지고 있는 서버. 예를 들어, 내 구글 캘린더 데이터가 저장된 서버
⚙️ OAuth 동작 원리
- 사용자가 앱(Client)에서 로그인 요청
: 어떤 일정 관리 앱에서 구글 계정으로 로그인 버튼을 누른다. - 앱이 인증 서버에 권한 요청
: 일정 관리 앱이 구글의 인증 서버에 이 사용자의 일정 정보를 가져와도 될까요?라고 요청한다. - 사용자가 권한을 승인
: 구글이 사용자에게 이 앱이 일정 정보를 가져와도 돼?라고 물어본다. 그럼 사용자는 허용을 누른다. - 인증 서버가 액세스 토큰을 발급
: 사용자가 허용하면, 구글은 앱에게 액세스 토큰을 발급해 준다. - 앱이 리소스 서버에서 데이터 요청
: 앱은 받은 토큰을 이용해서 구글 캘린더 서버에 토큰 들고 왔어요! 일정 정보 주세요!라고 요청한다. - 리소스 서버가 데이터 제공
: 토큰이 유효하면, 구글 캘린더 서버는 일정 데이터를 앱에게 보내준다.
그럼 이제 일정 관리 앱은 내 구글 캘린더 데이터를 활용할 수 있게 된다.
⚖️ OAuth의 장점과 단점
장점
✔️ 비밀번호를 직접 제공하지 않아, 보안이 강화된다.
✔️ 하나의 계정으로 여러 서비스를 쉽게 이용할 수 있다.
✔️ 특정 권한만 부여할 수 있어 안전하다 (예: 내 이메일은 안 주고, 캘린더 정보만 제공)
단점
✔️ OAuth를 구현하려면 서버 간 통신이 필요해서 복잡하다.
✔️ 토큰이 탈취되면 보안 위험이 발생할 수 있다. (그래서 토큰 유효 기간이 있다.)
✔️ 서비스마다 OAuth 구현 방식이 미묘하게 다를 수 있다.
참조
'Dev' 카테고리의 다른 글
직접 써본 FSD (Feature-Sliced Design) 적용기: 깔끔함과 혼란 사이 (0) | 2025.04.05 |
---|---|
[OAuth] OAuth 2.0을 파헤쳐보자 🔍 + 소셜로그인 예제 (0) | 2025.03.05 |
[OAuth] GCP (Google Cloud Platform)에서 Client ID 생성하기 🪪 (0) | 2025.03.05 |
React+MapBox Geojson 올리기 (Height 속성 활용하기 ) (0) | 2025.03.04 |
React+Mapbox 초기 세팅 🌍 (0) | 2025.03.04 |