🌿 중급 백엔드
OAuth가 뭔가요?
쉽게 이해하기
호텔 룸 카드키를 떠올려보세요. 청소 직원에게 방 열쇠를 맡길 때, 내 마스터키를 직접 주는 게 아니라 임시 카드키를 주잖아요. 청소가 끝나면 그 카드는 무효화되고, 내 마스터키는 여전히 안전하죠. OAuth도 마찬가지로, 내 비밀번호 대신 '임시 허가증(토큰)'을 발급해서 제한된 권한만 주는 거예요.
핵심 정리
비밀번호를 직접 주지 않고도 다른 서비스의 권한을 안전하게 위임할 수 있는 인증 방식이에요.
자세히 알아보기
OAuth(Open Authorization)는 사용자가 비밀번호를 직접 공유하지 않고도 다른 애플리케이션에 자신의 정보 접근 권한을 부여할 수 있는 개방형 표준입니다. '구글 계정으로 로그인', '카카오 계정으로 시작하기' 같은 버튼을 본 적 있죠? 바로 그게 OAuth를 사용한 거예요.
OAuth의 핵심 개념은 세 가지 주체가 등장한다는 점입니다. 리소스 소유자(나), 클라이언트(로그인하려는 앱), 리소스 서버(구글, 카카오 등)가 있죠. 내가 어떤 앱에 '구글로 로그인'을 하면, 구글이 '이 앱이 당신의 이메일과 프로필 사진에 접근하는 걸 허용하시겠어요?'라고 물어봅니다. 허용하면 구글이 그 앱에게 '토큰'을 발급하고, 앱은 그 토큰으로 내 정보에 접근하는 거예요.
실무에서 OAuth를 쓰는 이유는 보안과 편의성 때문입니다. 사용자는 매번 새로운 비밀번호를 만들 필요가 없고, 서비스 제공자는 비밀번호를 직접 관리하지 않아도 되니 해킹 위험이 줄어들죠. 또한 토큰에는 유효기간과 권한 범위가 설정되어 있어서, 필요 이상의 정보에 접근할 수 없습니다.
OAuth 2.0이 현재 가장 널리 쓰이는 버전인데, 이전 버전보다 구현이 간단하고 모바일 환경도 잘 지원합니다. 다만 OAuth는 '인증(Authentication)'이 아니라 '권한 부여(Authorization)'에 집중한 프로토콜이라는 점을 기억하세요. 실제 로그인 기능을 만들 때는 OAuth 위에 OpenID Connect라는 확장 프로토콜을 함께 사용하는 경우가 많습니다.