한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
OAuth 2.0 토큰 해지를 통한 기업용 계정 보안 강화
2016년 11월 29일 화요일
지난
2016년 10월 5일
부터 기업용 Gmail 사용자를 대상으로 계정 보안 기능이 강화되었습니다. Google Apps 도메인을 사용 중인 사용자가 비밀번호를 변경하면, Gmail 기반 인증을 통해 발급받은 OAuth 2.0 토큰이 자동으로 해지 됩니다. 따라서, 해당 토큰을 사용하는 앱은 새로운 토큰을 발급받아야 하며, 그렇지 않으면 사용자 메일 수신함에 접근할 수 없게 됩니다. 이는 사용자가 Gmail 관련 토큰이 무효가 되는 시점 이후에 비밀번호를 변경하는 경우에만 적용됩니다.
개발자는 애플리케이션이 해지된 토큰으로 인해 발생하는 HTTP 400 또는 401 오류를 처리하도록 수정하고, 사용자가 OAuth 흐름을 다시 진행해 앱을 다시 인증할 수 있도록 요청해야 합니다. 작년 말에 저희는 이와 비슷하지만, 더욱 광범위한 인증 범위에 영향을 미치는 보안 정책 관련 변경 계획을
발표
한 바 있습니다. 그 이후에 저희는 앱 고객을 대상으로 한 이런 변경 계획을 바로 진행하는
대신
, 위에서 설명한 것처럼 영향력이 덜한 업데이트를 개발하는 작업에 착수했습니다.
토큰이 해지된다는 것은 무슨 의미입니까?
해지된 OAuth 2.0 토큰으로는 더는 사용자 정보에 접근할 수 없습니다. API 호출 시, 해지된 토큰을 사용하면 오류가 발생합니다. Google API에 접근하는 애플리케이션은 실패한 API 호출을 처리하도록 수정해야 합니다.
토큰 해지 그 자체는 새로운 기능이 아닙니다. 사용자는 예전부터 항상
보안 점검 메뉴
에서 애플리케이션에 대한 접근을 해지할 수 있었고, Google Apps 관리자는 관리 콘솔에서 동일한 작업을 수행할 수 있습니다. 또한, 장기간 사용되지 않은 토큰은 항상 만료되거나 해지되었습니다. 다만, 보안 정책을 강화되어, 애플리케이션이 인식하는 해지된 토큰의 비율이 커질 수 있습니다.
어떤 API와 범위가 영향을 받습니까?
관리자와 최종 사용자가 느낄 혼란을 최소화하면서, 보안상의 이점을 달성하기 위해, 저희는 이 정책 변경을
이메일 범위
에만 적용하고
Apps Script
토큰은 제외하기로 했습니다.
Google Apps Marketplace
를 통해 설치된 앱에도 토큰 해지가 적용되지 않습니다. 이 변경 사항이 적용되면 Apple Mail 및 Thunderbird와 같은 타사 메일 앱(물론, 하나 이상의 메일 범위를 포함하는 다중 범위를 사용하는 다른 애플리케이션도 해당함)에서 비밀번호를 재설정한 경우 새 OAuth 2.0 토큰이 부여될 때까지 데이터 액세스가 금지됩니다. 개발자 애플리케이션은 이 시나리오를 감지하여 애플리케이션이 계정 데이터에 접근하지 못하게 되었음을 사용자에게 알리고 OAuth 2.0 흐름을 다시 진행하도록 요청해야 합니다.
모바일 메일 애플리케이션도 이 정책 변경에 포함되었습니다. 예를 들어, iOS에서 기본 메일 애플리케이션을 사용하는 사용자는 비밀번호가 변경된 경우 해당 Google 계정 자격 증명을 사용하여 다시 인증해야 합니다. 모바일 환경에서 실행되는 타사 메일 앱 역시 사용자가 자신 계정의 비밀번호를 재설정하는 경우, 다시 사용자 인증 과정을 거쳐야합니다. iOS 및 Android에서 실행되는 Gmail 앱도 동일한 방식으로 동작합니다.
내 토큰이 해지되었는지 어떻게 확인할 수 있습니까?
수명이 짧은 액세스 토큰과 수명이 긴 새로 고침 토큰 둘 다, 사용자가 비밀번호를 변경하면 해지됩니다. 해지된 액세스 토큰을 사용하여 API에 접근하거나, 새 액세스 토큰을 생성하면 HTTP 400 또는 401 오류가 발생합니다. 애플리케이션이 라이브러리를 사용하여 API를 사용하거나 OAuth 흐름을 처리하는 경우, 예외로 발생할 가능성이 큽니다. 예외의 원인을 판단하는 자세한 방법은 라이브러리 관련 문서를 참조하십시오.
참고: HTTP 400 오류는 다양한 원인으로 발생할 수 있으므로, 해지된 토큰으로 인해 발생하는 400 오류의 페이로드는 다음과 유사할 것이라 예상할 수 있습니다.
{ "error_description": "Token has been revoked.", "error": "invalid_grant" }
내 애플리케이션에서 해지된 토큰을 어떻게 처리해야 할까요?
토큰이 해지되는 것이 오류 상황이 아니라, 정상적인 상태라고 생각해야합니다. 애플리케이션은 이런 상태를 예상하고 감지해야 하며, UI는 토큰을 복원할 수 있도록 최적화되어야 합니다.
애플리케이션이 제대로 작동하도록 하려면 다음 작업을 수행하는 것이 좋습니다.
API 호출과 토큰 새로 고침 근처에 해지된 토큰을 감지할 수 있는 오류 처리 코드를 추가합니다.
해지된 토큰을 감지하면 사용자가 애플리케이션을 다시 인증할 수 있을 때까지 Google API 액세스를 이용하는 모든 애플리케이션 기능을 비활성화합니다. 예를 들어, Google API와 데이터를 동기화하는 반복적인 백그라운드 작업이 영향을 받을 수 있으므로 이런 작업을 모두 일시 중단합니다.
사용자에게 액세스가 해지되었음을 알리고 해당 리소스에 대한 액세스를 다시 인증하도록 요청합니다.
앱이 사용자와 직접 상호 작용하는 경우 사용자에게 이메일을 보내거나 다음에 애플리케이션을 열 때 알림을 표시하는 등의 방법으로 다시 인증하도록 요청해야 합니다.
하지만, 앱이 사용자와 관계없이 독립적으로 실행되는 경우(이를테면 Gmail API를 사용하는 백그라운드 앱) 이메일이나 기타 메커니즘을 통해 사용자에게 알려야 합니다.
액세스를 다시 인증할 수 있는 간소화된 UI를 제공합니다. 사용자가 애플리케이션을 탐색하여 원래 설정을 찾도록 하지 마십시오.
해지된 토큰은 토큰이 해지된 방법에 상관없이 유사한 오류 메시지를 표시합니다. 따라서 비밀번호 변경으로 인해 토큰이 해지되었다고 가정하고서 메시지를 표시하면 안 됩니다.
애플리케이션이
증분 인증(Incremental authorization)
을 사용하여 동일한 토큰에서 범위를 늘려나가는 경우 지정된 사용자가 활성화한 기능과 범위를 추적해야 합니다. 최종 결과로서, 앱이 여러 범위에 대해 인증을 요청하고 획득했으며 그 중 하나 이상이 메일 범위인 경우 해당 토큰이 해지됩니다. 이는 처음에 승인된 모든 범위에 대해 다시 인증하도록 사용자에게 요청해야 한다는 뜻입니다.
많은 애플리케이션이 백그라운드 또는 서버 간 API 호출을 수행할 목적으로 토큰을 사용합니다. 사용자는 당연히 이 백그라운드 작업이 안정적으로 계속될 것이라 여깁니다. 이번 정책 변경은 그러한 앱에도 영향을 미치므로 재인증을 요청하는 프롬프트 알림이 훨씬 더 중요해집니다.
자세한 내용과 전체
메일 범위
목록은
도움말 센터 문서 및 FAQ
를 참조하시기 바랍니다. 앞으로 정책에 추가해야 할 추가 범위가 있다면 미리 알려드리겠습니다. 관련 세부 사항이 확정되면 바로 알려드리겠습니다.
게시자: Michael Winser(Google Apps 제품 책임자),
Wesley Chun
(Google Apps 디벨로퍼 어드보케)
▶
원문 링크
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed