使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

启用电子邮件枚举保护

本指南介绍了如何启用电子邮件枚举保护。

概览

电子邮件枚举是一种暴力破解攻击,即恶意行为者尝试向 API 传递电子邮件地址并检查响应,从而猜测或确认系统中的用户。

在下面的示例中,电子邮件枚举保护已停用。Identity Platform 会返回可用于电子邮件枚举攻击的信息:

  • 尝试使用系统中不存在的电子邮件地址登录。Identity Platform 会返回 EMAIL_NOT_FOUND 错误。

  • 尝试使用系统中已存在的电子邮件地址进行注册。Identity Platform 会返回 EMAIL_EXISTS 错误。

您可以使用 Identity Platform 的电子邮件枚举保护功能保护您应用中的用户帐号,防范这类攻击。电子邮件枚举保护提供以下功能:

  • 登录和注册请求无效会返回 INVALID_LOGIN_CREDENTIALS 错误响应。
  • 移除电子邮件验证流程的错误响应。如果该电子邮件地址存在,系统会发送一封验证邮件。如果没有,则系统不会发送验证邮件。
  • 禁止用户在不验证新地址的情况下更改电子邮件地址。
  • 禁止在调用 createAuthUri 时列出指定电子邮件地址的登录方法。

启用电子邮件枚举保护

如需启用电子邮件枚举保护,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,使用 gcloud auth print-access-token 命令输出项目 ID 的访问令牌:

    gcloud auth print-access-token --project=PROJECT_ID
    
  2. 使用 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' \
        "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=email_privacy_config"
    

请替换以下内容:

  • ACCESS_TOKEN:您之前生成的访问令牌
  • PROJECT_ID:您的项目 ID

停用电子邮件枚举保护

要停用电子邮件枚举保护,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,使用 gcloud auth print-access-token 命令输出项目 ID 的访问令牌:

    gcloud auth print-access-token --project=PROJECT_ID
    
  2. 使用 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' \
        "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\"}]}}"
}