LumoMate
LumoMate/용어집/BoundarySecurity

OAuth

OAuth는 한 서비스(예: 구글·카카오)에 등록된 사용자가, 자기 비밀번호를 직접 넘기지 않고도 다른 앱에 자기 데이터를 일부 권한만 위임할 수 있게 해 주는 표준입니다.
OAuth의 개념을 표현한 편집형 일러스트.

쉬운 설명

옛날엔 외부 앱이 '구글 계정 연동' 같은 기능을 제공하려면 사용자의 구글 비밀번호를 직접 받아 가는 위험한 방식이 흔했습니다. 한 앱이 해킹되면 그 사용자의 구글 계정 전체가 위험해졌습니다. OAuth는 이 흐름을 바꿉니다.

사용자가 구글의 동의 화면에서 직접 '이 앱에 내 캘린더 읽기 권한을 줍니다'라고 승인하면, 구글이 앱에 액세스 토큰을 발급합니다. 앱은 그 토큰으로 허용된 범위만 접근할 수 있고, 비밀번호는 영영 보지 못합니다. 사용자는 언제든 구글에서 그 권한을 회수할 수 있습니다.

흐름은 보통 네 단계입니다. ① 앱이 사용자에게 '구글로 계속하기'를 보여 줌. ② 사용자는 구글 사이트로 이동해 로그인하고 권한에 동의. ③ 구글이 앱에 인증 코드를 돌려주고, 앱이 그것을 토큰으로 교환. ④ 앱은 그 토큰으로 사용자 정보·캘린더·메일 등 정해진 범위(scope)만 호출. 한 번 발급된 토큰은 만료까지 유효하며, 갱신 토큰으로 새 토큰을 받을 수 있습니다.

OAuth에는 여러 버전과 변형이 있습니다. OAuth 1.0은 옛 버전이고, OAuth 2.0이 현재 표준입니다. OAuth 2.0 위에 '신원 확인' 기능을 표준화한 것이 OpenID Connect(OIDC)입니다. '카카오로 로그인'처럼 우리가 흔히 보는 소셜 로그인은 사실 OIDC 위에서 동작합니다. 즉 OAuth는 원래 '권한 위임'을 위한 표준이고, OIDC는 그 위에서 '신원 확인'을 표준화한 것입니다.

구현 시 주의: OAuth는 표준이지만 보안 함정이 많습니다. 리다이렉트 URL 검증, 토큰 저장 위치, CSRF 방어, PKCE(Proof Key for Code Exchange) 적용 같은 디테일을 잘못하면 큰 사고로 이어집니다. 그래서 직접 구현하기보다 Auth0·Clerk·Supabase·NextAuth 같은 라이브러리/서비스를 쓰는 게 거의 항상 안전합니다.

OAuth의 개념을 본문 안에서 다른 각도로 비춰 보는 편집형 일러스트.
FIG. 1OAuth을 다른 각도에서 다시 봅니다.

비유로 보면

OAuth는 자동차 발렛파킹 키와 비슷합니다. 운전기사가 차 주인의 진짜 키를 받지 않고, 발렛 키 — 시동만 걸 수 있고 트렁크는 못 여는 — 를 받습니다. 발렛 키를 잃어도 차 주인의 진짜 키와 트렁크 안 물건은 안전합니다. OAuth의 토큰이 그 발렛 키 역할입니다.

어디에서 만나나

소셜 로그인(카카오·구글·애플·페이스북), API 권한 위임(노션 API·구글 캘린더·슬랙·깃허브), SaaS 사이의 통합(예: 영업 도구에서 캘린더 자동 동기화), 모바일 앱의 클라우드 동기화. 거의 모든 현대 서비스가 OAuth 통합을 한두 개는 가지고 있습니다.

작은 예시

스타트업 가계부 앱이 '카카오로 시작' 버튼을 제공합니다. 사용자는 카카오 동의 화면에서 '이메일과 닉네임 제공'에 동의하고, 앱은 그 정보로 회원 가입을 처리합니다. 사용자의 카카오 비밀번호는 앱이 본 적도 알 수도 없습니다.

자주 하는 오해

오해
흔한 오해 셋. ① 'OAuth = 로그인 방법' — 원래는 권한 위임을 위한 표준이고, 로그인은 그 위의 OIDC가 다룹니다. ② '한 번 토큰을 받으면 영원' — 만료가 있고, 사용자가 언제든 회수할 수 있습니다. ③ '구현은 쉬움' — 표준이지만 보안 디테일이 많아, 검증된 라이브러리를 쓰는 것이 안전합니다.

한 줄 정리

OAuth의 진짜 가치는 '비밀번호를 넘기지 않고 권한을 나눈다'에 있습니다. 사용자는 통제를 유지하고, 앱은 필요한 만큼만 받습니다.
매주 월요일 오전 8시

한 주에 한 통,
오래 남는 이해를 보냅니다.

흘려보내지 않는 글만 골라 보내드립니다. 광고와 추적, 외부로 빠지는 미끼 링크 없이 메일 안에서 끝나는 한 통입니다.

언제든 한 번의 클릭으로 해지할 수 있습니다. 스팸은 보내지 않습니다.