서버에서 SMS 인증 수행

전화번호를 자동으로 인증하려면 클라이언트 및 서버 부분까지 전달됩니다. 이 문서에서는 서버 부분을 구현합니다.

전화 인증 서버는 다음 세 가지 작업을 수행합니다.

  1. 일회용 코드를 포함하고 클라이언트 측 SMS Retriever API에서 예상하는 형식
  2. 사용자 기기에 확인 메시지 전송
  3. 서버로 다시 전송된 일회성 코드를 확인하고 백엔드에 필요한 모든 사후 확인 작업을

앱이 서버와 상호작용하는 방법은 개발자가 결정합니다. 일반적인 두 개의 엔드포인트, 즉 요청을 수신하는 엔드포인트로 REST API를 노출하는 SMS 인증 메시지를 전송하고 두 번째 엔드포인트를 생성합니다.

1. 인증 메시지 작성

서버가 전화번호 인증 요청을 받으면 먼저 사용자 기기로 보낼 확인 메시지입니다. 이 메시지 다음을 충족해야 합니다.

  • 140바이트 이하여야 합니다.
  • 클라이언트가 서버로 다시 보내는 일회성 코드를 포함해야 합니다. 확인 절차를 완료합니다 (자세한 내용은 일회성 코드 생성)
  • 앱을 식별하는 11자 해시 문자열을 포함합니다( 앱의 해시 문자열 계산)

또는 확인 메일의 내용을 원하는 대로 선택할 수 있습니다. 일회성 메시지를 쉽게 추출할 수 있는 메시지를 만들면 도움이 됩니다. 살펴보겠습니다 예를 들어 유효한 확인 메시지는 있습니다.

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

일회성 코드 생성

코드가 다음과 같다면 일회성 코드를 다양한 방법으로 구현할 수 있습니다. 코드를 사용자 또는 전화번호와 연결할 수 있으므로 앱이 서버로 다시 전송합니다. 코드를 쉽게 입력하고 사용자가 코드를 수동으로 입력해야 하는 모든 상황을 수용할 수 있습니다.

일회성 코드를 구현하는 한 가지 방법은 키처럼 사용할 수 있습니다 예를 들어 PendingVerifications가 있을 수 있습니다. 테이블은 다음과 같습니다.

ID 사용자 만료
123456789... 1234 2017년 3월 14일 1시 59분

base32로 인코딩된 ID를 일회성 코드로 사용할 수 있습니다.

앱의 해시 문자열 계산

Google Play 서비스는 해시 문자열을 사용하여 어떤 인증을 메시지를 앱에 보냅니다. 해시 문자열은 앱의 패키지 이름으로 구성됩니다. 앱의 공개키 인증서가 포함되어 있습니다. 해시 문자열을 생성하려면 다음 안내를 따르세요.

  1. Google Play 앱 서명을 사용하는 경우 앱 서명 인증서 (deployment_cert.der)를 Google Play Console앱 서명 섹션

    그런 다음 앱 서명 인증서를 임시 키 저장소로 가져옵니다.

    keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
    

    APK에 직접 서명하는 경우 이 단계를 건너뛰세요.

  2. 위에서 가져온 앱 서명 인증서 또는 앱 서명 인증서를 가져옵니다. 소문자 16진수 문자열로 APK에 직접 서명하는 데 사용하는 키-값 쌍입니다.

    예를 들어 생성된 임시 키 저장소에서 16진수 문자열을 가져오려면 다음 명령어를 입력합니다.

    keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
    

    APK에 직접 서명하는 경우 프로덕션 키 저장소 및 인증서 별칭입니다.

  3. 임시 키 저장소를 만들었다면 삭제합니다.

  4. 앱의 패키지 이름에 16진수 문자열을 단일 있습니다.

  5. 결합된 문자열의 SHA-256 합계를 계산합니다. 반드시 SHA-256을 계산하기 전에 문자열의 선행 또는 후행 공백 합계입니다.

  6. SHA-256 합계의 바이너리 값을 Base64로 인코딩합니다. 이 문제를 해결하기 위해 SHA-256 합계를 먼저 확인합니다.

  7. 앱의 해시 문자열은 base64로 인코딩된 해시.

다음 명령어는 앱의 프로덕션에서 해시 문자열을 계산합니다. 키 저장소:

keytool -exportcert -alias PlayDeploymentCert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11

또는 AppSignatureHelper를 사용하여 앱의 해시 문자열을 가져올 수 있습니다. 클래스를 생성할 수 있습니다. 그러나 도우미 클래스를 사용하면 해시 문자열을 받은 후에는 앱에서 삭제해야 합니다. 사용하지 않음 인증 메시지에서 동적으로 계산된 해시 문자열을 사용합니다.

2. SMS로 인증 메시지 보내기

확인 메일을 작성한 후 사용자의 SMS 시스템을 통해 해당 전화번호를 사용하는 것입니다.

예를 들어 Twilio SMS를 사용하여 앱 인증을 참조하세요. 참조하세요.

사용자의 기기로 이 메시지가 수신되면 있습니다. 앱은 일회용 코드를 추출하고 인증 절차를 완료하세요

3. 일회용 코드가 반환되면 확인

일반적으로 전화번호 확인 서버에는 두 번째 엔드포인트가 있습니다. 클라이언트 앱에서 일회성 코드를 다시 수신할 수 있습니다. 서버가 일회성 코드를 이 엔드포인트에 사용하려면 다음 단계를 따르세요.

  1. 일회용 코드가 유효하고 만료되지 않았는지 확인합니다.
  2. 일회성 코드에 연결된 사용자가 전화번호를 모두 완료했음을 기록 있습니다.
  3. 일회성 코드의 데이터베이스 레코드를 삭제하거나 다른 방법으로 같은 코드를 다시 사용할 수 없습니다.

상담사가 사용자의 인증 상태를 기록하고 인증에서 일회성 코드를 삭제하는 경우 인증이 완료되었습니다.