SMS 기반 인증에 reCAPTCHA SMS Defense 사용 설정
이 문서에서는 reCAPTCHA SMS Defense를 사용하여 전화 및 다중 인증과 같은 Identity Platform SMS 기반 흐름을 SMS 펌핑 공격이라고도 하는 SMS 전화 결제 사기로부터 보호하는 방법을 설명합니다. 이 통합은 승인되지 않은 SMS 트래픽이 사용자 및 리소스에 부정적인 영향을 미치지 않도록 방지하는 데 도움이 됩니다.
개요
앱에서 인증에 SMS를 사용하는 경우 reCAPTCHA SMS Defense 통합을 사용 설정하는 것이 좋습니다. 이 기능을 사용 설정하면 최종 사용자가 다음 phoneProvider
작업을 사용하여 앱 또는 사이트에서 인증 SMS 메시지를 요청할 때마다 Firebase 인증 및 Identity Platform에서 reCAPTCHA SMS 방어 기능을 자동으로 호출합니다.
작업 | 메서드 | |
---|---|---|
전화번호 가입 또는 로그인 | sendVerificationCode |
|
MFA 전화번호 등록 | mfaSmsEnrollment |
|
MFA 전화번호 로그인 | mfaSmsSignIn |
그러면 reCAPTCHA에서 Firebase 인증 또는 Identity Platform에 사용자의 전화번호에 대한 SMS 전화 결제 사기 가능성을 나타내는 위험 점수를 제공합니다. 그런 다음 이 점수를 구성된 기준과 비교합니다. 위험 점수가 이 기준점을 초과하면 SMS 메시지가 전송되지 않아 사기 시도를 효과적으로 차단할 수 있습니다.
reCAPTCHA SMS 방어 점수의 작동 방식을 알아보려면 점수 해석을 참고하세요.
reCAPTCHA SMS 방어 기능에 대한 자세한 내용은 SMS 사기 감지 및 방지를 참고하세요.
reCAPTCHA 전화 인증 시행 모드
감사 또는 시행 모드를 사용하도록 reCAPTCHA SMS Defense의 전화 인증 시행을 구성할 수 있습니다.
감사 모드
전화 인증 시행을 감사 모드로 설정하면 Identity Platform에서 앱 인증에 reCAPTCHA SMS 방어를 사용합니다. 사용자의 요청이 전화 결제 사기 평가를 통과하면 SMS 인증 코드가 전송됩니다. 사용자의 요청이 전화 결제 사기 평가에 실패하고 클라이언트 SDK를 사용하는 경우 Identity Platform은 대체 인증 방법을 트리거하여 전화 인증 흐름을 완료합니다. 허용되는 대체 방법은 앱의 플랫폼에 따라 다릅니다.
클라이언트 SDK는 다음 시나리오에서 대체 인증 방법을 트리거합니다.
- reCAPTCHA 토큰이 누락되었습니다.
- reCAPTCHA 토큰이 잘못되었거나 만료되었습니다.
- reCAPTCHA 토큰이 점수 기준점을 통과하지 못했습니다.
- reCAPTCHA가 올바르게 구성되지 않았습니다.
앱 플랫폼의 대체 인증 방법이 설정되어 있고 필요한 경우 클라이언트 SDK에 의해 트리거될 준비가 되어 있는지 확인합니다.
웹
초기 통화 사기 평가가 실패하면 감사 모드에서는 인증을 위해 reCAPTCHA v2를 사용합니다. 따라서 reCAPTCHA 확인자 (RecaptchaVerifier
)를 설정하고 다음 전화 인증 작업에 전달해야 합니다.
verifyPhoneNumber
signInWithPhoneNumber
linkWithPhoneNumber
reauthenticateWithPhoneNumber
auth/argument-error
가 반환됩니다. reCAPTCHA 인증기 설정에 대한 자세한 내용은 Firebase 문서의 reCAPTCHA 인증기 설정을 참고하세요.
Android
초기 전화 사기 평가가 실패하면 감사 모드에서 Play Integrity API에 대해 앱을 확인합니다. 이 인증에 실패하면 reCAPTCHA v2가 트리거됩니다. 다음 시나리오에서 reCAPTCHA v2가 트리거될 수 있습니다.
- 최종 사용자의 기기에 Google Play 서비스가 설치되어 있지 않은 경우
- 앱이 Google Play 스토어를 통해 배포되지 않은 경우 (인증 SDK v21.2.0 이상)
- 획득한 SafetyNet 토큰이 유효하지 않은 경우 (인증 SDK 버전 v21.2.0 이전)
iOS
초기 통화료 사기 평가가 실패하면 감사 모드에서는 확인을 위해 자동 푸시 알림을 사용합니다. 이 확인 방법은 요청 기기의 앱에 자동 푸시 알림을 사용하여 토큰을 전송하는 방식입니다. 앱이 알림을 성공적으로 수신하면 전화 인증 흐름이 진행됩니다. 앱이 푸시 알림을 수신하지 않으면 reCAPTCHA v2가 트리거됩니다. 자동 푸시 알림이 올바르게 구성되지 않으면 reCAPTCHA v2가 트리거될 수 있습니다.
iOS 앱 인증 설정에 관한 자세한 내용은 Firebase 문서의 앱 인증 사용 설정을 참고하세요.
시행 모드
전화 인증 시행을 시행 모드로 설정하면 Identity Platform에서 앱 인증에 reCAPTCHA SMS 방어를 사용합니다. 사용자의 요청이 전화 결제 사기 평가를 통과하면 SMS 인증 코드가 전송됩니다. 사용자의 요청이 전화 결제 사기 평가를 통과하지 못하면 Identity Platform에서 요청을 차단하고 인증 코드가 포함된 SMS 메시지를 전송하지 않습니다.
시행 모드에서는 대체 인증이 필요하지 않으므로 앱에 추가 인증 방법을 설정하지 않아도 됩니다. 하지만 앱의 reCAPTCHA 모드를 AUDIT
또는 OFF
로 변경하는 경우 reCAPTCHA v2가 사용 설정되도록 웹 앱에 reCAPTCHA 인증 도구를 설정하는 것이 좋습니다.
시작하기 전에
Identity Platform에 reCAPTCHA SMS Defense를 사용 설정하기 전에 다음 작업을 완료하세요.
앱 또는 사이트에 다음을 구성합니다(해당하는 경우).
- 사용자의 전화 로그인
- 웹, Android 또는 iOS 앱의 다단계 인증
앱 또는 사이트에 맞게 Firebase 인증을 구성합니다.
reCAPTCHA SMS Defense 사용 설정
인증을 설정합니다.
-
In the Google Cloud console, activate Cloud Shell.
서비스 ID를 만듭니다.
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_ID
PROJECT_ID
를 해당 프로젝트의 ID로 바꿉니다.생성한 서비스 ID에
roles/identitytoolkit.serviceAgent
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \ --role=roles/identitytoolkit.serviceAgent
다음을 바꿉니다.
PROJECT_ID
: 프로젝트 IDPROJECT_NUMBER
: 프로젝트 계정 번호
-
프로젝트에서 reCAPTCHA Enterprise API를 사용 설정합니다.
프로젝트에 reCAPTCHA SMS Defense를 사용 설정합니다.
Google Cloud 콘솔에서 reCAPTCHA 페이지로 이동합니다.
리소스 선택기에 프로젝트 이름이 표시되는지 확인합니다.
프로젝트 이름이 표시되지 않으면 리소스 선택기를 클릭한 후 프로젝트를 선택합니다.
설정 클릭합니다.
SMS 방어 창에서 구성을 클릭합니다.
사용 설정 전환 스위치를 클릭하고 저장을 클릭합니다.
reCAPTCHA SMS Defense를 사용 설정하면 계정 방어 도구도 아직 사용 설정되지 않은 경우 사용 설정됩니다.
reCAPTCHA SMS Defense 사용 설정이 Google 시스템에 적용되는 데 몇 분 정도 걸릴 수 있습니다. 전파되면 평가의 일환으로 reCAPTCHA SMS Defense와 관련된 응답을 받기 시작합니다.
Firebase 인증 또는 Identity Platform 프로젝트의 reCAPTCHA SMS Defense 설정을 구성하려면 다음 단계를 따르세요.
다음 URL에서
PROJECT_ID
,Recaptcha_MODE
,START_SCORE
을 바꿉니다.https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"emailPasswordEnforcementState":"OFF","phoneEnforcementState":"Recaptcha_MODE","useSmsTollFraudProtection":true,"tollFraudManagedRules":[{"action":"BLOCK","startScore":START_SCORE}]}}}
PROJECT_ID
: identity-platform이 사용 설정된 프로젝트 식별자입니다.Recaptcha_MODE
: reCAPTCHA 전화 인증 시행에 설정할 모드입니다. 유효한 값은OFF
,AUDIT
,ENFORCE
입니다. reCAPTCHA SMS Defense를 사용 설정하려면 이 매개변수를AUDIT
또는ENFORCE
로 설정하고useSmsTollFraudProtection
를true
로 설정해야 합니다.reCAPTCHA SMS Defense를 처음 사용 설정할 때는
AUDIT
모드를 사용하여 reCAPTCHA SMS Defense 설정이 올바르게 작동하는지 확인하세요.AUDIT
모드는 엄격히 확인 목적으로만 사용됩니다. 이 모드는 승인되지 않은 SMS 트래픽을 방지하지 않습니다. 측정항목 대시보드에 실패가 표시되지 않는지 확인합니다. 확인 후 즉시ENFORCE
모드를 사용 설정합니다. 모드 작동 방식에 대한 자세한 내용은 reCAPTCHA 전화 인증 시행 모드를 참고하세요.START_SCORE
: SMS 요청이 요금 사기로 표시되고 차단되기 전에 SMS 요청이 가질 수 있는 최고 점수를 결정하는 구성 가능한 기준점입니다.최소 기준점은
0.0
입니다. 최대 기준액은0.9
입니다. 점수가 기준점보다 높은 요청은 사기로 간주됩니다. 예를 들어 기준을0.3
로 설정하면 reCAPTCHA는 사기 점수가0.4
이상인 요청을 차단합니다.사기 방지 수준을 높이려면 기준을 더 낮은 값으로 설정하세요. 사기 방지 수준을 낮추려면 기준을 더 높은 값으로 설정하세요. 이 설정을 사용하면 점수가 높은 요청이 더 많이 통과됩니다.
초기 구현 시
0.8
와 같은 높은 기준점으로 시작한 다음 특정 위험 허용 범위에 따라 반복적으로 낮추는 것이 좋습니다.0.0
또는1.0
의 기준은 권장되지 않습니다. 기준을0.0
로 설정하면 모든 SMS 메시지가 차단되고,1.0
로 설정하면 사기 방지가 완전히 사용 중지되어 위험도가 높은 지역으로의 SMS 전송이 실패할 수 있습니다.
Google Cloud 콘솔에 로그인한 새 브라우저 창에 URL을 입력합니다.
웹 또는 Android에서 Identity Platform을 사용하는 경우 Firebase Console에서 앱을 등록합니다.
Android의 경우 Identity Platform을 사용하는 각 Android 패키지 이름을 등록합니다.
웹의 경우 reCAPTCHA를 사용하는 각 도메인에 승인된 도메인을 추가합니다.
Google Cloud 콘솔에서 Identity Platform 페이지로 이동합니다.
설정 > 보안으로 이동합니다.
도메인 추가를 클릭합니다.
도메인 이름을 입력하고 추가를 클릭하여 도메인을 저장합니다.
reCAPTCHA 키 프로비저닝을 완료하는 데 몇 분 정도 걸릴 수 있습니다.
구성을 확인합니다
reCAPTCHA 구성 세부정보를 가져옵니다.
projectId
또는projectNumber
로{replace-your-project}
측면 패널에서GetConfig
API를 실행하여 reCAPTCHA 구성을 가져옵니다.reCAPTCHA SMS Defense가 올바르게 구성되었는지 확인합니다.
reCAPTCHA 구성이 올바르게 설정된 경우 응답에는 지정된 값이 있는 다음 필드가 있어야 합니다.
recaptchaKeys
: 필드가 비어 있으면 안 되며 iOS, 웹 또는 Android 중 하나 이상의 플랫폼에 대해 구성되어야 합니다.useSmsTollFraudProtection
: 이 필드의 값은true
로 설정해야 합니다.phoneEnforcementState
: 값은ENFORCE
또는AUDIT
로 설정해야 합니다.tollFraudManagedRules
: 이 필드 내에서startScore
은 선택한 임계값으로 구성해야 하며, 이 임계값은0
~0.9
사이의 값이어야 합니다.
그렇지 않으면 reCAPTCHA SMS Defense를 다시 구성하세요.
샘플 응답
{ "recaptchaConfig": { "recaptchaKeys": [ { "key": "projects/{your-project}/keys/{recaptcha-key}", "type": "WEB" }, { "type": "IOS" }, { "type": "ANDROID" } ], "phoneEnforcementState": "ENFORCE", "tollFraudManagedRules": [ { "startScore": 0.8, "action": "BLOCK" } ], "useSmsTollFraudProtection": true } } ```
SDK 버전이 올바른지 확인합니다.
웹
최신 버전의 웹 SDK로 업데이트합니다.
- 웹 앱의 이메일 및 비밀번호 인증을 위한 reCAPTCHA 지원은 JavaScript SDK 버전 9.20.0 이상에서 제공됩니다.
- 웹 앱의 전화 인증을 위한 reCAPTCHA 지원은 JavaScript SDK 버전 11 이상에서 제공됩니다.
웹 SDK를 앱에 통합하면 SDK가 reCAPTCHA 구성을 자동으로 가져오고 구성한 제공업체의 보호를 사용 설정합니다.
Android
최신 버전의 Android SDK로 업데이트하세요. Android 앱의 이메일 및 비밀번호 인증과 전화 인증을 위한 reCAPTCHA 지원은 Android SDK 버전 23.1.0 이상에서 제공됩니다.
또한 reCAPTCHA 지원에는 API 수준 23(Marshmallow) 이상 및 Android 6 이상이 필요합니다.
Android SDK를 앱과 통합하면 SDK가 reCAPTCHA 구성을 자동으로 가져오고 구성한 제공업체에 설정된 기준점을 적용합니다.
앱 수준
build.gradle
파일의 종속 항목 섹션에 다음 빌드 규칙을 추가하세요.implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
reCAPTCHA SDK 버전 18.5.1 이상을 사용해야 합니다.
iOS
- iOS SDK 버전 11.6.0 이상으로 업데이트합니다.
iOS SDK를 앱과 통합하면 SDK가 reCAPTCHA 구성을 자동으로 가져오고 구성한 제공업체에 설정된 기준점을 적용합니다.
앱에 reCAPTCHA iOS SDK를 통합하려면 iOS 환경 준비를 참고하세요.
링커 플래그에
-ObjC
가 있는지 확인하려면 타겟 > 빌드 설정 > 전체 > 연결로 이동하여Other Linker Flags
에-ObjC
가 표시되는지 확인합니다.
identitytoolkit.googleapis.com/recaptcha/verdict_count
identitytoolkit.googleapis.com/recaptcha/token_count
identitytoolkit.googleapis.com/recaptcha/sms_tf_risk_scores
- 전화 인증 시행 상태를
AUDIT
로 설정하면 Identity Platform은 하나 이상의 평가를 충족할 때 요청을 전달합니다. reCAPTCHA SMS 방어 및 봇 보호가 적절한 점수 설정으로 구성되어 있는지 확인하려면 reCAPTCHA 측정항목을 모니터링하는 것이 좋습니다. - 전화 인증 시행 상태를
ENFORCE
로 설정한 경우 Identity Platform은 평가를 모두 충족하고 다른 인증 방법으로 대체되지 않고 요청이 실패로 종료되는 경우에만 요청을 전달합니다. - reCAPTCHA SMS 방어 기능에 대해 자세히 알아보세요.
reCAPTCHA SMS Defense의 reCAPTCHA 측정항목 모니터링
프로젝트가 내보내는 reCAPTCHA 측정항목을 모니터링하여 SMS 기반 인증 흐름이 보호되는지 확인합니다. 예를 들어 이러한 측정항목은 reCAPTCHA Enterprise API와의 Identity Platform 통합을 올바르게 설정했는지 확인하는 데 도움이 될 수 있습니다. 또한 사용자 트래픽의 점수 기준을 조정하는 데도 도움이 됩니다.
프로젝트가 Cloud Monitoring에 내보내는 다음 측정항목을 확인하여 reCAPTCHA SMS Defense 기능이 작동하는지 확인하세요.
자세한 내용은 reCAPTCHA 측정항목 모니터링을 참고하세요.
reCAPTCHA SMS Defense 시행
앱이 허용되는 사용자 트래픽을 수신하는지 확인한 후 reCAPTCHA ENFORCE
모드를 사용 설정하여 허위 요청을 적극적으로 차단하여 사용자를 보호하세요.
프로젝트 또는 테넌트에서 SMS 기반 인증 흐름에 ENFORCE
모드를 사용 설정하려면 Google API 탐색기를 사용하여 Google Cloud 콘솔에 로그인한 새 브라우저 창에 다음 HTTP URL을 입력하여 프로젝트 구성을 업데이트합니다.
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"phoneEnforcementState":"ENFORCE","useSmsTollFraudProtection":"true"}}}
PROJECT_ID
를 프로젝트 ID로 바꿉니다.
봇 보호와 함께 reCAPTCHA SMS Defense 사용
reCAPTCHA SMS Defense는 봇 보호와 동시에 사용할 수 있습니다. 두 보호 기능을 모두 사용하는 구성의 경우 다음을 고려하세요.
두 기능을 모두 사용 설정하려면 Google API 탐색기를 사용하여 프로젝트 구성을 업데이트하세요.
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
ENFORCE_MODE
을 reCAPTCHA 전화 인증 시행에 설정하려는 모드로 바꿉니다. 유효한 값은 OFF
, AUDIT
, ENFORCE
입니다.
reCAPTCHA SMS 방어를 처음 사용 설정하는 경우 이 매개변수를 AUDIT
로 설정하고 인증 흐름이 보호되는지 확인한 후 ENFORCE
로 설정하는 것이 좋습니다. 모드 작동 방식에 대한 자세한 내용은 reCAPTCHA 전화 인증 시행 모드를 참고하세요.
봇 보호를 사용하는 동안 reCAPTCHA SMS Defense 사용 중지
reCAPTCHA SMS Defense와 봇 보호를 동시에 사용하고 있으며 봇 보호를 사용 중지하지 않고 reCAPTCHA SMS Defense를 사용 중지하려면 Google API 탐색기를 사용하여 프로젝트 구성을 업데이트하세요.
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: 'false',
useSmsBotScore: 'true'
}
ENFORCE_MODE
을 이전에 reCAPTCHA 전화 인증 시행에 대해 설정한 모드로 바꿉니다. 이 값은 AUDIT
또는 ENFORCE
이어야 합니다. 모드 작동 방식에 대한 자세한 내용은 reCAPTCHA 전화 인증 시행 모드를 참고하세요.
reCAPTCHA SMS Defense 사용 중지
reCAPTCHA SMS 방어를 사용 중지하려면 Google API 탐색기를 사용하여 Google Cloud 콘솔에 로그인한 새 브라우저 창에 다음 HTTP URL을 입력하여 프로젝트 구성을 업데이트하세요.
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"phoneEnforcementState":"OFF","useSmsTollFraudProtection":"false"}}}
PROJECT_ID
를 프로젝트 ID로 바꿉니다.
봇 보호를 사용하는 동안 reCAPTCHA SMS Defense를 사용 중지하려면 봇 보호를 사용하는 동안 reCAPTCHA SMS Defense 사용 중지를 참고하세요.