보안
OAuth
OAuth는 내 비밀번호를 앱에 직접 알려주지 않고, 다른 서비스의 필요한 권한만 제한해서 허용하는 표준 방식입니다.
쉬운 설명
OAuth는 내 비밀번호를 앱에 직접 알려주지 않고, 다른 서비스의 필요한 권한만 제한해서 허용하는 표준 방식입니다.
배경과 쓰임까지 이해하기
조금 더 자세히
OAuth는 내 비밀번호를 앱에 직접 알려주지 않고, 다른 서비스의 필요한 권한만 제한해서 허용하는 표준 방식입니다. 예를 들어 일정 관리 앱에 Google Calendar 읽기 권한을 주거나, 개발 도구에 GitHub 저장소 접근 권한을 줄 때 사용합니다. 사용자는 원래 서비스의 동의 화면에서 허용할 내용을 확인하고, 앱은 허용된 범위에서 쓸 수 있는 토큰(Token)을 받습니다.
`Google로 로그인` 같은 기능에서도 자주 보이지만, 로그인 정보 확인에는 보통 OpenID Connect가 함께 사용됩니다. API 키(API Key)가 주로 앱이나 프로젝트의 권한을 나타낸다면, OAuth는 사용자 동의를 바탕으로 제한된 권한을 빌려주는 흐름입니다. 한마디로, OAuth는 비밀번호 대신 범위가 정해진 출입증을 발급하는 권한 위임 방식입니다.
실제로는 이렇게 만나요
일정 관리 앱이 사용자를 Google의 동의 화면으로 보내고, 사용자가 일정 읽기를 허용하면 앱은 그 범위 안에서 사용할 수 있는 토큰(Token)을 받습니다.
- 이런 거 할 때 나와요 GitHub 저장소 읽기, Google Calendar 일정 조회, Slack 메시지 전송처럼 한 서비스가 다른 서비스의 기능을 사용자 대신 이용할 때 자주 등장합니다.
- 이렇게 생겼어요 `Google로 계속하기` 같은 버튼을 누른 뒤, 앱이 요청하는 권한과 허용 버튼이 표시된 동의 화면으로 자주 보입니다.
- 나오는 화면 예시 Google·GitHub 같은 서비스의 로그인 또는 권한 동의 화면과 앱의 연동 설정 화면
‘Google로 로그인’은 모두 OAuth인가요?
OAuth가 권한을 허용하는 흐름을 맡고, 사용자의 로그인 정보를 확인하는 데는 보통 OpenID Connect가 함께 사용됩니다. 화면에서는 하나의 로그인 과정처럼 보일 수 있습니다.
헷갈리기 쉬운 점
OAuth는 앱에 모든 권한을 주는 기능이 아닙니다. 요청 범위(scope), 돌아올 주소(redirect URI), 토큰 저장 방식을 잘못 설정하면 불필요한 권한 노출이나 로그인 실패가 생길 수 있습니다.
왜 알아두면 좋을까요?
GitHub 저장소 읽기, Google Calendar 일정 조회, Slack 메시지 전송처럼 한 서비스가 다른 서비스의 기능을 사용자 대신 이용할 때 자주 등장합니다.
Checklist
실제로 볼 때 확인할 것
- 01
요청하는 권한 범위가 꼭 필요한 수준인지 본다
- 02
등록한 redirect URI와 실제 주소를 정확히 맞춘다
- 03
토큰을 안전하게 저장하고 만료·폐기 방법을 확인한다