보안
OAuth
OAuth는 내 비밀번호를 앱에 넘기지 않고, 다른 서비스의 데이터나 기능에 접근할 권한을 허용하는 표준 방식입니다.
쉬운 설명
일정 요약 앱을 만들었다면 내 캘린더의 일정을 가져올 방법이 필요해요. 앱에 캘린더 계정의 비밀번호를 적는 대신, 원래 서비스에서 어떤 접근을 허용할지 확인하고 연결할 수 있어요. 이때 앱이 허용된 범위에서 접근할 수 있도록 하는 방식이 OAuth예요. 여기서는 널리 쓰이는 OAuth 2.0을 기준으로 설명해요.
이런 상황에서 만나요
AI로 만든 일정 요약 앱에서 “캘린더를 연결해 주세요”라는 안내를 만났다고 해 볼게요. 연결 과정에서 앱 이름과 요청하는 권한이 표시될 수 있어요. 일정만 읽어 요약하려는 앱인데 일정 수정이나 삭제까지 요구한다면, 요청한 범위가 기능에 맞는지 확인해야 해요.
허용할 앱과 권한을 확인해요
내 캘린더를 읽어 오늘의 일정을 요약하는 앱
learner@example.com
이 예시에서는 일정 수정·삭제 권한을 요청하지 않음
- 1내가 연결하려던 앱인지 이름과 용도를 확인해요.
- 2앱에 연결할 계정이 맞는지 확인해요. 다른 계정이면 원하는 일정이 보이지 않을 수 있어요.
- 3앱이 할 일에 맞는 권한인지 읽어 봐요. 권한을 요청한 상태와 실제로 허용된 상태는 달라요.
직접 앱을 만드는 중이라면 AI에게 “일정 조회에 필요한 권한만 요청하도록 설정을 확인해 줘”라고 요청할 수 있어요. 동의 후 앱으로 돌아오다가 오류가 나면 돌아올 주소인 리디렉션 URI가 서비스에 등록한 주소와 일치하는지 확인하세요. 연결은 됐는데 일정 조회가 거부된다면 허용한 권한 범위와 토큰 상태를 살펴봐요.
헷갈리기 쉬운 점
“Google로 로그인”이 곧 OAuth인가요?
OAuth의 중심은 앱이 무엇에 접근할 수 있는지 정하는 권한 허용이에요. 누가 로그인했는지 확인하는 인증과는 역할이 달라요. Google 로그인처럼 OpenID Connect를 사용하는 기능은 OAuth 2.0을 바탕으로 사용자 신원 확인을 더해요. 로그인됐다는 사실만으로 캘린더 읽기 권한까지 허용된 것은 아니에요.
동의 전에 연결하려는 앱과 계정, 요청 권한을 확인하세요. 앱이 발급받은 접근 토큰도 비밀번호처럼 공개하지 않아야 해요. 더 이상 쓰지 않는 앱은 원래 서비스의 연결 관리에서 접근 권한을 해제할 수 있어요.
왜 알아야 할까요?
로그인은 되는데 일정이 안 보일 때 로그인 기능부터 다시 만들지 않고, 데이터 접근 권한을 확인할 수 있어요. 앱을 만들 때도 필요한 권한만 요청하도록 범위를 정할 수 있어요.
조금 더 자세히
권한 범위는 scope라고 부릅니다. 앱은 필요한 범위를 요청하고, 서비스는 사용자의 동의나 정책에 따라 접근을 허용합니다. 접근 토큰(access token)은 앱이 API 요청에 사용하는 값입니다. 서비스는 토큰과 권한을 확인한 뒤 데이터를 제공합니다.
사용자가 동의하는 웹 앱에서는 인증 코드를 받아 토큰으로 교환하는 방식이 쓰입니다. 리디렉션 URI는 이 과정에서 사용자를 앱으로 돌려보낼 주소입니다. 로컬 개발 주소와 배포 주소가 다르면 각각의 환경에 맞게 등록해야 합니다. 세부 구현은 서비스의 공식 라이브러리와 보안 지침을 따릅니다.
접근 토큰에는 유효기간이 있을 수 있습니다. 갱신 토큰(refresh token)을 받는 구성에서는 이를 이용해 새 접근 토큰을 요청할 수 있지만, 모든 연결에서 발급되는 것은 아닙니다. 권한이 취소되거나 갱신할 수 없다면 다시 연결해야 할 수 있습니다.
직접 사용할 때 확인해 보세요
- 앱의 기능에 필요한 권한만 요청하는지 확인한다
- 개발·배포 환경의 리디렉션 URI를 확인한다
- 토큰 원문을 공개하지 않고 연결 해제도 확인한다