사용자 인증 정보 복원

인증 관리자의 사용자 인증 정보 복원 기능을 사용하면 사용자가 새 기기를 설정할 때 앱 계정을 복원할 수 있습니다. 이 API는 개발자 프리뷰 버전이며 Android 9 이상 및 Google Play 서비스가 설치된 모든 기기에서 사용 가능 (GMS) 코어 버전 242200000 이상 사용자 인증 정보 복원의 이점 기능에는 다음이 포함됩니다.

  • 원활한 사용자 환경: 사용자가 별도의 작업 없이 앱 계정을 복원할 수 있습니다. 개별 앱에 직접 로그인해야 하기 때문입니다.
  • 사용자 참여도 향상: 사용자가 새 기기를 설정할 때 계정을 복원할 수 있으면 앱을 계속 사용할 가능성이 높아집니다.
  • 개발 작업 감소: 인증 관리자와 통합된 인증 정보 복원 기능을 사용하면 이미 패스키를 지원하는 개발자가 인증 정보 복원 기능을 추가할 수 있습니다.

작동 방식

사용자 인증 정보 복원을 사용하여 사용자 인증 정보를 제공합니다

  1. 사용자 인증 정보 복원 만들기: 사용자가 앱에 로그인하면 다음을 만듭니다. 사용자 인증 정보 복원을 요청합니다. 이 사용자 인증 정보는 로컬에 저장되며 사용자가 Google 백업을 사용 설정하고 엔드 투 엔드 암호화를 사용할 수 있는 경우 클라우드에 동기화됩니다(앱에서 클라우드 동기화를 선택 해제할 수 있음).
  2. 복원 사용자 인증 정보 가져오기: 사용자가 새 기기를 설정하면 앱에서 인증 관리자에게 복원 사용자 인증 정보를 요청할 수 있습니다. 이렇게 하면 추가 입력 없이 사용자를 자동으로 로그인할 수 있습니다.
  3. 사용자 인증 정보 복원 삭제: 사용자가 앱에서 로그아웃하면 연결된 사용자 인증 정보 복원을 삭제해야 합니다.

사용자 인증 정보 복원 기능은 백엔드 시스템과 원활하게 통합될 수 있습니다. 패스키를 사용할 수 있습니다. 이러한 호환성은 패스키와 복원 키(사용자 인증 정보 복원 기능에서 사용하는 사용자 인증 정보 유형)가 모두 동일한 기본 기술 사양을 준수한다는 사실에서 비롯됩니다. 이렇게 정렬하면 사용자 인증 정보 복원 프로세스가 패스키 지원에 저장된 사용자 인증 정보를 효과적으로 검색하고 복구합니다. 여러 플랫폼에서 일관되고 사용자 친화적인 환경을 다양한 인증 방법을 제공합니다

인증 관리자 하단 시트
그림 1. 앱 데이터를 Google Cloud 서비스로 복원하는 과정을 새 기기에 사용자 인증 정보 생성을 포함하여 사용자 인증 정보 복원을 복원 흐름 시작 및 자동 사용자 로그인
를 통해 개인정보처리방침을 정의할 수 있습니다.

구현

Restore Credentials API는 Credential Manager Jetpack 라이브러리를 통해 사용할 수 있습니다. 시작하려면 다음 단계를 따르세요.

  1. 프로젝트에 인증 관리자 종속 항목을 추가합니다.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. CreateRestoreCredentialRequest 객체를 만듭니다.

  3. CredentialManager 객체에서 createCredential() 메서드를 호출합니다.

    val credentialManager = CredentialManager.create(context)
    
    // On a successful authentication create a Restore Key
    // Pass in the context and CreateRestoreCredentialRequest object
    val response = credentialManager.createCredential(context, createRestoreRequest)
    

    이렇게 생성된 복원 사용자 인증 정보는 패스키의 일종이며, 복원 패스키 또는 복원 키로 사용할 수 있습니다.

  4. 사용자가 새 기기를 설정하면 CredentialManager 객체에서 getCredential() 메서드를 호출합니다.

    // Fetch the Authentication JSON from server
    val authenticationJson = ...
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(Immutablelist.of(options))
    
    // The restore key can be fetched in two scenarios to
    // 1. On the first launch of app on the device, fetch the Restore Key
    // 2. In the onRestore callback (if the app implements the Backup Agent)
    val response = credentialManager.getCredential(context, getRequest)
    
  5. 사용자가 앱에서 로그아웃하면 clearCredentialState()를 호출합니다. 메서드(CredentialManager 객체)를 호출할 수 있습니다.

    // Create a ClearCredentialStateRequest object
    val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL)
    
    // On user log-out, clear the restore key
    val response = credentialManager.clearCredentialState(clearRequest)
    

백업 에이전트를 사용하는 경우 에이전트의 getCredential 부분을 onRestore 콜백. 이렇게 하면 앱의 사용자 인증 정보가 복원됩니다. 앱 데이터가 복원된 직후에 삭제할 수 없습니다.