Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

TOTP 软件令牌 MFA

在启用 TOTP 软件令牌 MFA 的情况下,验证用户的用户名和密码后,用户将面临质询,需要使用基于时间的一次性密码 (TOTP) 完成身份验证。如果应用程序对用户登录使用 Amazon Cognito 托管 UI,则当用户提交其用户名和密码后,该 UI 将另显示一页以让用户输入 TOTP 密码。

您可以通过 Amazon Cognito 托管 UI 或使用 Amazon Cognito API 在 Amazon Cognito 控制台中为用户池启用 TOTP MFA。在用户池级别,您可以通过调用 SetUserPoolMfaConfig 配置 MFA 和启用 TOTP MFA。

注意

如果未为用户池启用 TOTP 软件令牌 MFA,则用户无法与此令牌关联或验证此令牌。它们将收到 SoftwareTokenMFANotFoundException 异常,如下所示:“userPool 未启用软件令牌 MFA。”

为用户配置 TOTP 是一个多步骤过程,在此过程中,用户将收到一个秘密代码,它们通过输入一次性密码来验证该代码。接下来,您可以为用户启用 TOTP MFA,或将 TOTP 设置为用户的首选 MFA 方法。

要向用户池添加 MFA,请参阅向用户池添加多重验证 (MFA)

关联 TOTP 令牌

  1. 当您的用户选择 TOTP 软件令牌 MFA 时,调用 AssociateSoftwareToken 来返回为用户账户生成的唯一共享私有密钥代码。对此 API 方法的请求需要访问令牌或会话字符串,但不同时需要两者。为方便起见,您可以将私有密钥作为快速响应 (QR) 代码分发。

  2. 密钥代码或 QR 代码出现在您的应用程序上,您的用户需要将其输入到一个 TOTP 生成应用程序 (如 Google Authenticator) 中。

  3. 您的用户将密钥代码输入到 TOTP 生成应用程序中,以便将新账户与您的客户端应用程序相关联。

验证 TOTP 令牌

  1. 当新的 TOTP 账户与应用程序关联后,它将生成一个临时密码。

  2. 您的用户将该临时密码输入您的应用程序,而您的应用程序则通过调用 VerifySoftwareToken 来响应。在 Amazon Cognito 服务服务器上,将生成一个 TOTP 代码,并与用户的临时密码作比较。如果二者匹配,则服务将其标记为已验证。

  3. 如果代码正确,确认所用的时间在范围内,重试次数也未超过最大值。如果您的用户通过了所有步骤,则验证完成。

    或者,如果代码不正确,则验证无法完成,您的用户可以重试或取消。我们建议您的用户同步其 TOTP 生成应用程序的时间。

使用 TOTP MFA 登录

  1. 用户将输入其用户名和密码来登录客户端应用程序。

  2. TOTP MFA 质询被调用,您的应用程序提示用户输入临时密码。

  3. 您的用户从关联的 TOTP 生成应用程序获取临时密码。

  4. 您的用户在您的客户端应用程序中输入 TOTP 代码。您的应用程序通知 Amazon Cognito 服务验证该代码。每次登录时,都应调用 RespondToAuthChallenge,以获取对新的 TOTP 身份验证质询的响应。

  5. 如果令牌通过 Amazon Cognito 验证,则登录成功,您的用户可以继续完成身份验证流程。

删除 TOTP 令牌

  1. 您的应用程序应允许用户删除 TOTP 令牌。

  2. 客户端应用程序应要求用户输入其密码。

  3. 如果密码正确,则删除 TOTP 令牌。

    注意

    目前 API 中不支持删除 TOTP 软件令牌操作。计划在未来版本中提供此功能。使用 SetUserMFAPreference 为单独的用户禁用 TOTP MFA。