이 페이지에서는 OAuth 2.0과 통합하기 위한 몇 가지 일반적인 권장사항을 설명합니다. 애플리케이션 및 개발 플랫폼 유형에 대한 구체적인 안내와 함께 다음 권장사항도 고려하세요. 프로덕션용 앱을 준비하기 위한 도움말 및 Google의 OAuth 2.0 정책도 참고하세요.
클라이언트 사용자 인증 정보를 안전하게 처리
OAuth 클라이언트 사용자 인증 정보는 앱의 ID를 식별하므로 신중하게 처리해야 합니다. Google Cloud Secret Manager와 같은 보안 비밀 관리자를 사용하여 이러한 사용자 인증 정보를 안전한 저장소에만 저장합니다. 사용자 인증 정보를 하드코딩하거나 코드 저장소에 커밋하거나 공개적으로 게시하지 마세요.
사용자 토큰을 안전하게 처리
사용자 토큰에는 애플리케이션에서 사용하는 갱신 토큰과 액세스 토큰이 모두 포함됩니다. 토큰을 미사용 상태로 안전하게 저장하고 일반 텍스트로 전송하지 마세요. Android의 Keystore, iOS 및 macOS의 키체인 서비스 또는 Windows의 사용자 인증 정보 보관함과 같이 플랫폼에 적합한 보안 저장소 시스템을 사용하세요.
더 이상 필요하지 않은 토큰은 즉시 취소하고 시스템에서 영구적으로 삭제합니다.
또한 플랫폼에 대한 다음 권장사항도 고려하세요.
- 많은 사용자의 토큰을 저장하는 서버 측 애플리케이션의 경우 저장 데이터를 암호화하여 인터넷에 공개적으로 액세스할 수 없도록 데이터 저장소를 암호화합니다.
- 네이티브 데스크톱 앱의 경우 액세스 토큰과 교환할 수 있는 승인 코드를 얻으려면 PKCE (Proof Key for Code Exchange) 프로토콜을 사용하는 것이 좋습니다.
갱신 토큰 취소 및 만료 처리
앱이 오프라인 액세스를 위한 갱신 토큰을 요청한 경우 무효화 또는 만료도 처리해야 합니다. 토큰은 다양한 이유로 무효화될 수 있습니다. 예를 들어 토큰이 만료되었거나 사용자 또는 자동화된 프로세스에 의해 앱의 액세스 권한이 취소되었을 수 있습니다. 이 경우 다음에 로그인할 때 사용자에게 메시지를 표시하거나 데이터를 정리하는 등 애플리케이션이 어떻게 응답해야 하는지 신중하게 고려하세요. 토큰 취소 알림을 받으려면 교차 계정 보호 서비스와 통합하세요.
점진적 승인 사용
애플리케이션에 기능이 필요할 때 적절한 OAuth 범위를 요청하려면 증분 승인을 사용합니다.
앱의 핵심 기능에 필수적이지 않은 한 사용자가 처음 인증할 때 데이터 액세스를 요청해서는 안 됩니다. 대신 가능한 한 가장 작고 제한적인 범위를 선택하는 원칙에 따라 작업에 필요한 특정 범위만 요청하세요.
사용자가 앱에서 액세스 권한을 요청하는 이유와 데이터가 사용되는 방식을 이해할 수 있도록 항상 맥락에서 범위를 요청합니다.
예를 들어 애플리케이션은 다음 모델을 따를 수 있습니다.
- 사용자가 앱으로 인증합니다.
- 추가 범위는 요청되지 않습니다. 앱은 사용자가 추가 데이터나 액세스 권한이 필요하지 않은 기능을 탐색하고 사용할 수 있는 기본 기능을 제공합니다.
- 사용자가 추가 데이터에 대한 액세스 권한이 필요한 기능을 선택합니다.
- 애플리케이션이 이 기능에 필요한 특정 OAuth 범위에 대한 승인 요청을 합니다. 이 기능에 여러 범위가 필요한 경우 아래 권장사항을 따르세요.
- 사용자가 요청을 거부하면 앱은 기능을 사용 중지하고 액세스를 다시 요청할 수 있는 추가 컨텍스트를 사용자에게 제공합니다.
여러 범위에 대한 동의 처리
한 번에 여러 범위를 요청하면 사용자가 요청한 모든 OAuth 범위를 부여하지 않을 수 있습니다. 앱은 관련 기능을 사용 중지하여 범위 거부를 처리해야 합니다.
앱의 기본 기능에 여러 범위가 필요한 경우 동의를 요청하기 전에 사용자에게 이를 설명합니다.
사용자가 범위가 필요한 특정 기능을 사용하겠다는 의도를 명확하게 표시한 후에만 사용자에게 다시 메시지를 표시할 수 있습니다. 앱은 OAuth 범위를 요청하기 전에 사용자에게 관련 맥락과 근거를 제공해야 합니다.
앱이 한 번에 요청하는 범위 수를 최소화해야 합니다. 대신 증분 승인을 활용하여 기능과 기능 컨텍스트에서 범위를 요청하세요.
보안 브라우저 사용
웹에서는 모든 기능을 갖춘 웹브라우저에서만 OAuth 2.0 승인 요청을 해야 합니다. 다른 플랫폼에서는 올바른 OAuth 클라이언트 유형을 선택하고 플랫폼에 맞게 OAuth를 통합해야 합니다. Android의 WebView 또는 iOS의 WKWebView와 같은 모바일 플랫폼의 WebView를 비롯한 삽입된 탐색 환경을 통해 요청을 리디렉션하지 마세요. 대신 플랫폼에 네이티브 OAuth 라이브러리 또는 Google 로그인을 활용하세요.
OAuth 클라이언트 수동 생성 및 구성
악용을 방지하기 위해 프로그래매틱 방식으로 OAuth 클라이언트를 만들거나 수정할 수 없습니다. Google Developers Console을 사용하여 서비스 약관에 명시적으로 동의하고, OAuth 클라이언트를 구성하고, OAuth 인증을 준비해야 합니다.
자동화된 워크플로의 경우 대신 서비스 계정을 사용하는 것이 좋습니다.