TOTP 软件令牌 MFA - Amazon Cognito

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

TOTP 软件令牌 MFA

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

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

注意

如果未为用户池启用 TOTP 软件令牌 MFA,则用户无法与此令牌关联或验证此令牌。他们会收到 SoftwareTokenMFANotFoundException 例外,如下所示: "软件令牌MFA尚未由 userPool”

为用户配置 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. 如果代码正确,请检查使用的时间是否在范围内并在最大重试次数之内。Amazon Cognito 也接受 TOTP 令牌,此类令牌提前或延迟一个 30 秒时段以解决时钟偏差。如果您的用户通过了所有步骤,则验证完成。

    或者,如果代码不正确,则验证无法完成,您的用户可以重试或取消。我们建议您的用户同步其 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 为单个用户禁用TOTPMFA。