소개
Google 계정으로 로그인 (SiwG)은 사용자가 앱이나 웹사이트에 빠르고 안전하게 로그인할 수 있는 방법입니다. 이를 올바르게 구현하면 사용자 등록 프로세스가 간소화될 뿐만 아니라 애플리케이션의 보안도 강화됩니다. 이 문서에서는 웹, Android, iOS 플랫폼 전반에서 Google 로그인을 통합하기 위한 권장사항을 설명합니다. 이 문서에서는 인증에만 중점을 둡니다. 승인은 이 문서에서 다루지 않습니다.
통합 주요 일정 체크리스트
이 체크리스트는 Google로 로그인 통합 프로세스를 안내하는 대략적인 로드맵을 제공합니다. 초기 설정부터 프로덕션 출시까지 주요 단계로 구성되어 있습니다. 이 목록을 사용하여 진행 상황을 추적하고 링크를 클릭하여 각 주요 일정의 자세한 안내로 이동하세요.
모든 보안 및 사용자 환경 요구사항을 충족하려면 각 항목의 세부 가이드를 검토해야 합니다.0단계: 시작하기 (선택사항)
실용적인 단계별 개발자 Codelab으로 통합을 빠르게 시작하세요.
웹: 탭 한 번 및 Google 계정으로 로그인 버튼 Codelab을 완료하여 기본 웹 통합을 빌드합니다.
Android: Android Codelab을 완료하여 Android의 Credential Manager에 관한 기본사항을 알아봅니다.
iOS: iOS Codelab을 완료하여 iOS SDK를 소개합니다.
1단계: Google Cloud 프로젝트 및 브랜드 구성
처음부터 프로젝트가 성공적으로 설정되었는지 확인하세요.
다양한 환경 및 브랜드에 맞게 Google Cloud 프로젝트를 구성합니다.
필요한 모든 브랜딩 및 지원 정보를 사용하여 OAuth 동의 화면 구성을 완료합니다.
각 플랫폼 (웹, Android, iOS)에 맞는 OAuth 클라이언트 ID 유형을 만듭니다.
2단계: 핵심 개발: 프런트엔드 및 백엔드
안전한 서버 로직과 플랫폼별 사용자 환경을 빌드합니다.
프런트엔드 개발에서 다음을 수행합니다.
일반적인 사용자 환경 (UX) 권장사항을 검토하고 적용하여 사용자 도입 및 신뢰도를 극대화합니다.
웹: 공식 JavaScript 라이브러리를 사용하고 버튼 흐름과 원탭 흐름을 모두 통합합니다.
Android: 공식 Android SDK를 사용하여 통합합니다.
iOS: 공식 iOS SDK를 사용하여 통합합니다.
백엔드 개발에서 다음을 수행합니다.
Google ID 토큰의 보안 백엔드 유효성 검사를 구현합니다.
시스템에서 sub 클레임을 고유하고 영구적인 사용자 식별자로 사용합니다.
해당하는 경우 인증 및 승인 범위 분리를 계획합니다.
3단계: 보안 강화 및 프로덕션 출시
통합이 안전하고 규정을 준수하며 프로덕션에 사용할 준비가 되었는지 확인합니다.
보안 권장사항을 검토하고 구현합니다.
출시 전에 OAuth 앱 인증 프로세스를 완료하세요.
사용자 계정 삭제 시 애플리케이션이 토큰 취소를 올바르게 처리하는지 확인합니다.
일반 권장사항 (모든 플랫폼)
이러한 관행은 개발 대상 플랫폼과 관계없이 적용됩니다. 개발자는 일반 OAuth 2.0 정책도 검토하여 완전한 규정 준수를 보장해야 합니다.
Google Cloud 프로젝트 설정
이 섹션에서는 보안 및 브랜딩 규정 준수를 위해 Google Cloud 프로젝트를 구조화하고 OAuth 클라이언트를 설정하기 위한 권장사항을 설명합니다.
테스트 및 프로덕션에 별도의 프로젝트 사용
일부 Google 정책은 프로덕션 애플리케이션에만 적용되므로 개발, 스테이징, 프로덕션과 같은 다양한 배포 환경에 대해 Google Cloud 콘솔에서 별도의 프로젝트를 만들어야 합니다. 자세한 내용은 이 페이지를 참고하세요.
브랜드 또는 도메인별로 별도의 프로젝트 사용
조직에서 브랜드가 서로 다른 여러 애플리케이션을 관리하는 경우 각 브랜드에 전용 Google Cloud 프로젝트가 있어야 합니다. 동의 화면에 표시되는 사용자 대상 정보(예: 애플리케이션 이름, 로고, 지원 이메일, 서비스 약관 및 개인정보처리방침 링크)는 프로젝트 수준에서 구성됩니다. 즉, 단일 프로젝트 내에서 생성된 모든 OAuth 클라이언트 ID가 동일한 브랜딩을 공유합니다. 각 브랜드에 자체 프로젝트를 부여하면 사용자가 사용 중인 특정 애플리케이션에 맞는 브랜딩 및 법적 정보를 볼 수 있습니다.
일반 지원 이메일 제공
사용자 지원 이메일 주소는 OAuth 동의 화면에 공개적으로 표시됩니다. 전문성을 유지하고 연속성을 보장하려면 항상 일반 지원 이메일 (예:
support@yourdomain.com)를 사용합니다. 자세한 내용은 이 페이지를 참고하세요.플랫폼별 OAuth 클라이언트
앱이 실행되는 각 플랫폼 (예: 웹, Android, iOS)을 모두 동일한 Google Cloud 프로젝트 내에서 관리할 수 있습니다. 각 플랫폼에 올바른 클라이언트 유형을 사용하는 것이 중요한 두 가지 주요 이유는 다음과 같습니다.
- 향상된 보안: 각 클라이언트 유형은 플랫폼별 보안 기능을 지원합니다. 예를 들어 Android 클라이언트는 패키지 이름과 서명 인증서로 잠글 수 있으므로 클라이언트 ID의 무단 사용을 방지할 수 있습니다.
- 적절한 기능: 애플리케이션이 Android의 사용자 인증 정보 관리자 또는 iOS용 Google로 로그인 SDK와 같은 플랫폼별 SDK 및 기능과 올바르게 통합되도록 합니다.
이 구조는 사용자 환경도 간소화합니다. 동의는 Google Cloud 프로젝트 수준에서 처리되므로 사용자는 모든 플랫폼에서 애플리케이션에 한 번만 동의하면 됩니다. 자세한 내용은 공식 OAuth 2.0 정책을 참고하세요.
OAuth 앱 인증 완료
프로덕션 앱에 이름과 로고가 표시되려면 인증을 받아야 합니다. 확인 유형은 사용자에게 요청하는 데이터에 따라 다릅니다.
- Google로 로그인은 인증 범위(
email,profile,openid)만 요청하므로 더 간단한 브랜드 인증이 적용됩니다. 이 절차는 일반적으로 더 빠르며 브랜드의 신원을 확인하는 데 중점을 둡니다.
출시 일정을 계획하는 데 도움이 되도록 Google에서는 다양한 인증 유형과 예상 검토 시간을 세부적으로 제공합니다. 인증 정책에 대한 자세한 내용은 OAuth 앱 인증 고객센터를 참고하세요.
- Google로 로그인은 인증 범위(
보안 및 토큰 처리
이 섹션에서는 개발자가 백엔드 서버에 구현해야 하는 런타임 요구사항과 보안 조치에 중점을 둡니다.
백엔드와 Google ID 토큰 통합
- ID 토큰 확인: 항상 백엔드 서버에서 Google ID 토큰의 무결성을 확인합니다. 클라이언트에서 전송된다는 이유만으로 토큰을 신뢰해서는 안 됩니다. 이 확인에는 Google API 클라이언트 라이브러리를 사용하는 것이 좋습니다. 자세한 내용은 서버 측에서 Google ID 토큰 확인을 참고하세요.
sub클레임 사용: Google ID 토큰sub필드는 모든 Google 계정에서 고유하고 안정적이며 재사용되지 않으므로 사용자 식별자로만 사용하세요.sub필드를 저장하고 계정 관리 시스템에서 사용자와 연결해야 합니다. ID 토큰의 이메일 주소를 사용하여 사용자의 기존 계정이 있는지 확인할 수 있지만, Google 계정은 시점에 따라 여러 이메일 주소를 가질 수 있으므로 이메일 주소를 식별자로 사용하지 마세요.
계정 삭제 시 토큰 취소
Google로 로그인하는 사용자에게 Google 계정을 애플리케이션에서 연결 해제하는 기능을 제공하는 것이 좋습니다. 사용자가 계정을 삭제하기로 선택한 경우 애플리케이션이 획득한 모든 액세스 권한과 새로고침 토큰을 취소해야 합니다.
클라이언트 측 토큰 취소에 관한 자세한 내용은 웹, Android, iOS 문서를 참고하세요. 서버 측 취소의 경우 웹 서버 애플리케이션용 OAuth 2.0 사용을 참고하세요.
인증과 승인 분리
Google로 로그인 SDK는 인증에 필요한 범위만 요청합니다. 애플리케이션이 다른 Google 서비스 (예: Google Calendar 또는 Drive)에 액세스해야 하는 경우 이러한 권한을 별도로 요청해야 하며 사용자가 이러한 권한이 필요한 작업을 실행하려고 할 때만 요청해야 합니다. 자세한 내용은 인증 및 승인 시점 분리를 참고하세요.
보안 권장사항
안전한 통합을 위해 항상 Google API 클라이언트 라이브러리를 사용하여 백엔드 서버에서 ID 토큰을 확인하세요. 다양한 위협으로부터 더 포괄적으로 보호하려면 보안 번들 및 계정 간 보안 (RISC)을 구현하세요. 또한 iOS 앱의 경우 요청이 인증된 앱에서 발생하도록 앱 체크를 통합하는 것이 좋습니다.
사용자 경험(UX)
이 섹션에서는 사용자 대상 요소와 로그인/가입 흐름을 최적화하는 데 중점을 둡니다.
버튼을 눈에 띄게 표시: Google 계정으로 로그인 버튼은 로그인 및 등록 페이지에서 명확하게 표시되고 액세스할 수 있어야 합니다.
브랜드 가이드라인 준수: 공식 Google 브랜드 로그인 버튼을 사용하여 일관되고 신뢰할 수 있는 사용자 환경을 보장합니다. 공식 Google 계정으로 로그인 브랜드 가이드라인을 검토하세요.
원활한 가입: 신규 사용자의 경우 Google을 사용한 첫 번째 로그인에 성공하면 자동으로 계정을 만들거나 사용자에게 새 계정 생성 흐름을 안내합니다. 백엔드에서 지정된
subID를 가진 사용자가 있는지 확인하고, 없는 경우 새 계정을 만듭니다. 이렇게 하면 등록 노력이 최소화됩니다.간소화된 로그인: 재방문 사용자의 경우
subID를 사용하여 기존 계정으로 식별하고 인증합니다. 웹 및 Android용 자동 로그인과 같은 기능을 구현하여 사용자가 빠르고 안전하게 앱으로 돌아오도록 합니다.소셜 로그인 방법 관리: 사용자가 다양한 소셜 로그인 방법 (예: Google)을 관리할 수 있는 사용자 설정의 중앙 '연결된 계정' 섹션을 제공합니다.
연결: 다른 방법 (예: 사용자 이름 및 비밀번호)을 사용하는 기존 사용자에게 'Google 계정으로 로그인' 버튼을 제공합니다. 이 버튼을 클릭하면 Google 계정을 기존 프로필에 연결하는 인증 흐름이 시작됩니다.
연결 해제: 계정 연결을 해제하는 옵션을 제공합니다. 이 작업을 완료하려면 토큰을 취소하고 데이터베이스에서 Google 연결을 삭제해야 합니다.
Android 구현 (앱 및 게임)
표준 Android 앱
Android 구현의 경우 인증 관리자를 사용해야 합니다. 사용자 인증 정보를 처리하는 데 권장되는 접근 방식이며 Android에서 통합되고 안전하며 일관된 로그인 환경을 제공합니다.
구현 시 Android용 OAuth 클라이언트 ID를 사용합니다. 다른 플랫폼 (예: 웹, iOS)에 Google로 로그인 구현이 이미 있는 경우 동일한 Google Cloud 프로젝트에서 새 OAuth 클라이언트 ID Android 유형을 만들어야 합니다.
구현 흐름
강력한 구현에는 인증 관리자의 하단 시트 UI와 Google 계정으로 로그인 버튼이 모두 포함되어야 합니다.
- 하단 시트: 사용자가 로그인 화면에 도착할 때 인증 관리자가 표시하는 개발자 중심의 마찰이 적은 프롬프트입니다.
- Google 계정으로 로그인 버튼: 사용자가 탭하여 시작할 수 있는 명시적인 사용자 시작 로그인 흐름입니다.
- 정확한 Google Cloud 프로젝트 구성이 필수입니다. 여기에는 올바른 유형의 OAuth 클라이언트 ID를 만들고 앱의
SHA-1인증서 지문과 같은 세부정보를 제공하는 것이 포함됩니다. 올바르게 설정하려면 공식 Android 개발자 가이드를 정확하게 따르세요.
사용자가 바텀 시트를 닫거나 환경설정에서 사용 중지했을 수 있으므로 항상 버튼 흐름을 포함해야 합니다. 버튼을 사용하면 언제든지 로그인 프로세스를 시작할 수 있습니다.
게재위치 전략
Google 계정으로 로그인 버튼:
- 위치: 전용 가입 또는 로그인 페이지에 Google 계정으로 로그인 버튼을 표시합니다.
- 가시성: 사용자 이름 및 비밀번호 필드 또는 기타 소셜 로그인 제공업체와 같은 다른 로그인 방법과 함께 눈에 띄게 배치합니다.
인증 관리자 Bottomsheet:
Android 게임
Android 게임의 경우 Credential Manager는 권장되는 접근 방식이 아닙니다. 대신 게임 개발자는 Google 계정으로 로그인을 사용하여 크로스 플랫폼 Google ID에 중점을 두는 Google Play 게임 서비스 (PGS) 접근 방식을 사용해야 합니다. 자세한 내용은 Google로 로그인 사용을 통한 크로스 플랫폼 Google ID 문서를 참고하세요.
iOS 구현
공식 Google 계정으로 로그인 SDK 사용
iOS 앱의 경우 공식 iOS 및 macOS용 Google 로그인 SDK를 사용해야 합니다. 이 라이브러리는 Google 로그인을 통합하는 가장 안전하고 사용자 친화적인 방법을 제공합니다.
구현을 위해 iOS의 OAuth 클라이언트 ID를 사용합니다. 다른 플랫폼 (예: 웹, Android)에 Google로 로그인 구현이 이미 있는 경우 동일한 Google Cloud 프로젝트에서 새 OAuth 클라이언트 ID iOS 유형을 만들어야 합니다.
'Google 계정으로 로그인' 버튼 추가
- 배치: 가입 및 로그인 페이지 모두에서 앱의 로그인 뷰에 'Google 계정으로 로그인' 버튼을 추가합니다. 사용자 이름 및 비밀번호 입력란 또는 기타 소셜 로그인 제공업체와 같은 다른 로그인 방법과 함께 눈에 띄게 배치합니다.
- 권장 구성요소 사용: SwiftUI와 UIKit 모두에 SDK에서 제공하는 공식 버튼 구성요소를 사용합니다. 이러한 구성요소는 Google의 브랜딩 가이드라인을 준수하는 버튼을 자동으로 생성하며 버튼을 표시하는 데 권장되는 방법입니다.
앱 체크로 보안 강화
OAuth 2.0 클라이언트에 대한 요청이 인증된 앱에서 발생했는지 확인하여 백엔드 리소스를 악용으로부터 보호하세요. 앱 체크는 증명 제공업체를 사용하여 요청이 변조되지 않은 정품 앱 인스턴스에서 발생했는지 확인하고 그렇지 않은 요청은 거부합니다. 자세한 내용은 iOS의 Google 로그인용 App Check을 참고하세요.
웹 구현
웹사이트 및 웹 애플리케이션 안내
공식 Google 로그인 JavaScript 라이브러리 사용
웹 구현의 경우 공식 Google 계정으로 로그인 JavaScript 라이브러리를 사용해야 합니다. 이는 웹용 Google의 최신 세대 ID 라이브러리이며 버튼과 원탭 기능이 모두 포함되어 있습니다.
구현을 위해 웹의 OAuth 클라이언트 ID를 사용합니다. 다른 플랫폼 (예: Android, iOS)에 Google로 로그인 구현이 이미 있는 경우 동일한 Google Cloud 프로젝트에서 새 OAuth 클라이언트 ID 웹 유형을 만들어야 합니다.
버튼 및 원탭 흐름 모두 구현
'Google 계정으로 로그인' 버튼과 원탭 로그인 환경을 모두 구현하는 것이 좋습니다.
- Google 계정으로 로그인 버튼: 명시적인 사용자 시작 로그인/가입 흐름입니다.
- 원탭: 원활하고 중단이 적은 로그인 또는 가입 메시지를 제공합니다.
- 두 구현 모두에 웹에 동일한 OAuth 클라이언트 ID를 사용합니다.
버튼을 기본 로그인 옵션으로 항상 포함해야 합니다. 사용자는 Google 계정 설정에서 원탭을 닫거나 사용 중지할 수 있지만 버튼은 항상 제공되므로 사용자가 로그인하지 못하는 상황은 발생하지 않습니다.
게재위치 전략
Google 계정으로 로그인 버튼:
- 위치: 전용 가입 또는 로그인 페이지에 맞춤설정된 Google 계정으로 로그인 버튼을 표시합니다.
- 가시성: 사용자 이름 및 비밀번호 필드 또는 기타 소셜 로그인 제공업체와 같은 다른 로그인 방법과 함께 눈에 띄게 배치합니다.
- 검토: 최적의 구성과 성능을 위해 Google 계정으로 로그인 버튼 고려사항 섹션을 검토합니다.
원탭 프롬프트: