이메일 열거 보호 사용 설정
이 가이드에서는 이메일 열거 보호를 사용 설정하는 방법을 설명합니다.
개요
이메일 열거는 악의적인 행위자가 API에 이메일 주소를 전달하고 응답을 확인하여 시스템의 사용자를 추측하거나 확인하는 무차별 대입 공격의 한 유형입니다.
다음 예시에서는 이메일 열거 보호가 중지되어 있습니다. Identity Platform에서 이메일 열거 공격에 사용될 수 있는 정보를 반환합니다.
시스템에 존재하지 않는 이메일 주소로 로그인을 시도합니다. Identity Platform이
EMAIL_NOT_FOUND
오류를 반환합니다.시스템에 이미 존재하는 이메일 주소로 가입을 시도합니다. Identity Platform이
EMAIL_EXISTS
오류를 반환합니다.
Identity Platform의 이메일 열거 보호 기능을 사용하면 앱에서 이러한 공격으로부터 사용자 계정을 보호할 수 있습니다. 이메일 열거 보호는 다음과 같은 기능을 제공합니다.
- 잘못된 로그인 케이스는
INVALID_LOGIN_CREDENTIALS
오류 응답을 반환합니다. 잘못된 가입 케이스는EMAIL_EXISTS
를 반환합니다. - 이메일 확인 흐름의 오류 응답을 삭제합니다. 존재하는 이메일 주소인 경우 확인 메일이 전송됩니다. 존재하지 않는 이메일 주소의 경우에는 확인 메일이 전송되지 않습니다. 사용자가 이메일 인증 흐름 없이 가입하는 것을 허용하지 않는 것이 좋습니다.
- 사용자가 먼저 새 주소를 인증하지 않으면 이메일 주소를 변경할 수 없도록 합니다.
createAuthUri
를 호출할 때 지정된 이메일 주소의 로그인 메서드 나열을 중지합니다.
이메일 열거 보호 사용 설정
이메일 열거 보호를 사용 설정하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서
gcloud auth print-access-token
명령어를 사용하여 프로젝트 ID의 액세스 토큰을 출력합니다.gcloud auth print-access-token --project=PROJECT_ID
Identity Toolkit API를 사용하여 프로젝트 ID에 이메일 열거 보호를 사용 설정합니다.
curl -X PATCH -d "{'email_privacy_config':{'enable_improved_email_privacy':"true"}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=email_privacy_config"
다음을 바꿉니다.
- ACCESS_TOKEN: 이전에 생성한 액세스 토큰입니다.
- PROJECT_ID: 프로젝트 ID입니다.
이메일 열거 보호 중지
이메일 열거 보호를 중지하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서
gcloud auth print-access-token
명령어를 사용하여 프로젝트 ID의 액세스 토큰을 출력합니다.gcloud auth print-access-token --project=PROJECT_ID
Identity Toolkit API를 사용하여 이메일 열거 보호를 중지합니다.
curl -X PATCH -d "{'email_privacy_config':{'enable_improved_email_privacy':"false"}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=email_privacy_config"
다음을 바꿉니다.
- ACCESS_TOKEN: 이전에 생성한 액세스 토큰입니다.
- PROJECT_ID: 프로젝트 ID입니다.
오류 응답의 예시
사용자가 잘못된 이메일 주소 또는 비밀번호로 로그인을 시도하거나 시스템에 이미 존재하는 이메일 주소로 가입하려고 시도하면 Identity Platform이 다음과 유사한 오류를 반환합니다.
{
"code": "auth/internal-error",
"message": "{\"error\":{\"code\":400,\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"errors\":[{\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"domain\":\"global\",\"reason\":\"invalid\"}]}}"
}