iOS에서 Google 로그인용 앱 체크 사용 시작하기

이 페이지에서는 iOS 앱에서 앱 체크를 사용 설정하는 방법을 설명합니다. 앱 체크를 사용 설정하면 사용자의 앱만 프로젝트를 대신하여 Google의 OAuth 2.0 엔드포인트에 액세스할 수 있습니다. 이 기능의 개요를 참고하세요.

앱 체크는 App Attest를 사용하여 OAuth 2.0 요청이 인증된 앱에서 전송되었는지 확인합니다. 앱 체크는 사기 위험을 분석하는 데 App Attest를 사용하지 않습니다.

시작하기 전에

  1. Xcode 12.5 이상이 설치되어 있는지 확인합니다.

  2. Google 로그인 라이브러리를 사용하여 iOS 앱에 Google 로그인을 통합합니다.

1. 프로젝트 설정

앱 체크는 또는 Firebase Console에서 사용 설정할 수 있습니다. 두 위치 모두에서 사용 설정하지 않아도 됩니다. 하나만 사용 설정해도 충분합니다.

iOS 클라이언트에 앱 체크를 사용 설정하려면 다음 요구사항을 충족해야 합니다.
  • iOS 클라이언트의 팀 ID를 지정해야 합니다.
  • 번들 ID에 와일드 카드를 사용하면 두 개 이상의 앱으로 확인될 수 있으므로 와일드 카드를 사용해서는 안 됩니다. 즉, 번들 ID에 별표 (*) 기호를 포함해서는 안 됩니다.
앱 체크를 사용 설정하려면 iOS 클라이언트의 수정 뷰에서 Firebase 앱 체크를 사용해 OAuth 클라이언트가 악용되지 않도록 보호 전환 버튼을 사용 설정하세요.

앱 체크를 사용 설정하면 OAuth 클라이언트의 수정 뷰에 클라이언트의 OAuth 요청과 관련된 측정항목이 표시됩니다. 앱 체크를 적용할 때까지는 확인되지 않은 소스의 요청이 차단되지 않습니다. 측정항목 모니터링 페이지의 정보를 통해 시정 조치를 시작할 시기를 결정할 수 있습니다.

iOS 앱에 App Check를 사용 설정할 때 App Check 기능과 관련된 오류가 표시될 수 있습니다. 이러한 오류를 수정하려면 다음을 시도해 보세요.

  • 지정한 번들 ID와 팀 ID가 유효한지 확인합니다.
  • 번들 ID에 와일드 카드를 사용하고 있지 않은지 확인합니다.

Firebase Console

  1. Google 로그인과 함께 App Check을 사용하려면 Firebase 프로젝트가 있어야 합니다.

    • 앱에서 이미 Firebase를 사용하고 있다면 동일한 프로젝트를 사용하세요.

    • 앱에서 Firebase가 아닌 Google 로그인을 사용하는 경우 이미 Google Cloud 프로젝트가 있는 것입니다. Firebase Console에서 새 프로젝트를 만들 때 Firebase를 선택하여 Google Cloud 프로젝트에 Firebase를 추가합니다.

      참고: Firebase 프로젝트와 Google Cloud 간의 관계

  2. 아직 iOS 앱을 추가하지 않았다면 Firebase Console의 프로젝트 설정 페이지를 사용하여 Firebase 프로젝트에 iOS 앱을 추가합니다.

  3. Firebase Console의 앱 체크 섹션에서 App Attest 제공업체와 함께 앱 체크를 사용할 앱을 등록합니다.

  4. 프로젝트의 모든 OAuth 클라이언트가 앱에 연결되어 있는지 확인합니다.

    연결 해제된 클라이언트가 있는 경우 앱 확인 페이지의 iOS용 Google ID 섹션에 '추가 설정이 필요한 연결 해제된 OAuth 클라이언트가 n개 있습니다.'라는 메시지가 표시됩니다.

    또한 App Check에서 OAuth 클라이언트를 설정한 후 일부 OAuth 클라이언트를 삭제한 경우 '일치하는 OAuth 클라이언트가 없는 재정의가 n개 있습니다'라는 메시지가 표시됩니다. 이러한 재정의를 삭제하여 안전하게 정리할 수 있습니다.

    Firebase Console의 OAuth 클라이언트 페이지에서 연결되지 않은 클라이언트를 기존 앱 또는 새 앱에 연결할 수 있습니다.

2. 앱에 Google 로그인 라이브러리 추가

  1. Xcode 프로젝트에서 Google 로그인 종속 항목을 버전 8.0.0 이상으로 설정합니다.

    SPMCocoaPods

    googlesignin-ios의 종속 항목 규칙을 버전 8.0.0 이상으로 설정합니다.

    Podfile를 업데이트합니다.

    source 'https://github.com/CocoaPods/Specs.git'
    source 'https://github.com/firebase/SpecsDev.git'
    
    target 'YourAppName' do
      use_frameworks!
    
      pod 'GoogleSignIn','~> 8.0'
          :git => 'https://github.com/google/GoogleSignIn-iOS.git'
      pod 'GoogleSignInSwiftSupport'  # If you use SwiftUI.
    end
    

    그런 다음 pod install을 실행하고 생성된 .xcworkspace 파일을 엽니다.

  2. Xcode에서 App Attest 기능을 앱에 추가합니다.

  3. 프로젝트의 .entitlements 파일에서 App Attest 환경을 production으로 설정합니다.

3. 앱 체크 초기화

앱 대리자의 didFinishLaunchingWithOptions 메서드에서 GIDSignIn.sharedInstance.configure(completion:)를 호출합니다. 사용자에게 인식되는 지연 시간을 최소화하려면 앱의 수명 주기에서 최대한 빨리 이 메서드를 호출해야 합니다.

import SwiftUI
import GoogleSignIn

class AppDelegate: NSObject, UIApplicationDelegate {
  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
  ) -> Bool {
    #if targetEnvironment(simulator)
    // Configure for debugging.
    // See: https://developers.google.com/identity/sign-in/ios/appcheck/debug-provider
    #else
    GIDSignIn.sharedInstance.configure { error in
      if let error {
        print("Error configuring `GIDSignIn` for Firebase App Check: \(error)")
      }
    }
    #endif

    return true
  }
}

@main
struct YourAppNameApp: App {
  @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

  // ...
}

다음 단계

앱에 앱 체크 라이브러리가 설치되면 업데이트된 앱을 사용자에게 배포하기 시작합니다.

업데이트된 클라이언트 앱이 Google의 인증 엔드포인트에 전송하는 모든 요청과 함께 앱 체크 토큰을 보내기 시작하지만 엔드포인트에서는 Firebase Console의 앱 체크 섹션에서 적용을 사용 설정할 때까지 토큰이 유효하지 않아도 됩니다.

측정항목 모니터링

적용을 사용 설정하기 전에 먼저 이렇게 해도 기존의 정당한 사용자에게 불편을 야기하지 않는지 확인해야 합니다. 반면에 앱 리소스 사용이 의심스러워 보이면 적용을 더 빠르게 사용 설정하는 것이 좋습니다.

적용 여부에 대한 판단을 내리는 데 도움이 되는 Google 로그인의 앱 체크 측정항목을 확인해 보세요.

앱 체크 적용 사용 설정

앱 체크가 사용자에게 미치는 영향을 이해하고 계속 진행할 준비가 되면 앱 체크 적용을 사용 설정할 수 있습니다.

디버그 환경에서 앱 체크 사용

앱 체크에 앱을 등록한 후 앱 체크에서 일반적으로 유효하지 않은 것으로 분류하는 환경(예: 개발 중인 시뮬레이터 또는 지속적 통합(CI) 환경)에서 앱을 실행하려면 App Attest 대신 앱 체크 디버그 제공자를 사용하는 앱의 디버그 빌드를 만들면 됩니다.

디버그 제공자와 함께 앱 체크 사용을 참고하세요.