使用自适应身份验证 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用自适应身份验证

借助自适应身份验证,可以将用户池配置为阻止可疑登录,或为响应增加的风险级别添加第二安全要素身份验证。对于每次登录尝试,Amazon Cognito 都会生成一个风险分数来表示登录请求来自遭盗用源的可能性。此风险分数基于许多因素,包括它是否检测到新设备、用户位置或 IP 地址。自适应身份验证基于风险级别为那些没有在用户级别启用 MFA 类型的用户添加 MFA。当在用户级别启用 MFA 类型时,无论您如何配置自适应身份验证,这些用户在身份验证过程中将始终收到第二个因素质询。

Amazon Cognito 将向 Amazon CloudWatch 发布登录尝试、其风险级别和失败的质询。有关更多信息,请参阅 查看高级安全指标

要向用户池添加自适应身份验证,请参阅 向用户池添加高级安全

自适应身份验证概览

在 Amazon Cognito 控制台中的 Advanced security (高级安全) 页面上,您可以选择自适应身份验证的设置,包括在不同风险级别下采取什么操作,以及向用户发送的通知消息的自定义设置。

对于每个风险级别,您可以选择以下选项:

选项

操作

允许 用户无需额外安全要素即可登录。
可选 MFA 已配置第二安全要素的用户需要完成第二安全要素质询才能登录。用于 SMS 的电话号码和 TOTP 软件令牌是可供使用的第二个安全要素。未配置第二个因素的用户只能使用一组凭证登录。
需要 MFA 已配置第二安全要素的用户需要完成第二安全要素质询才能登录。Amazon Cognito 阻止未配置第二个安全要素的用户登录。
Block Amazon Cognito 阻止指定风险级别下的所有登录尝试。
注意

您无需验证手机号码即可将其用于 SMS 来作为第二个身份验证要素。

创建设备指纹

从服务器调用 Amazon Cognito 身份验证 API 操作(如 AdminInitiateAuthAdminRespondToAuthChallenge)时,必须在 ContextData 参数中传递用户的源 IP。此外,请传递服务器名称、服务器路径和编码的设备指纹数据。使用 Amazon Cognito 上下文数据收集库收集并提交此数据。

有关从 Web 或移动应用程序启用高级安全的信息,请参阅 通过应用程序启用用户池高级安全

当您的应用程序从服务器调用 Amazon Cognito 时,从客户端收集用户上下文数据。以下是使用 JavaScript 开发工具包方法 getData 的示例。

var encodedData = AmazonCognitoAdvancedSecurityData.getData(username, userPoolId, clientId);

在设计应用程序以使用自适应身份验证时,我们建议您将最新的 Amazon Cognito 开发工具包集成到应用程序中。最新版本的开发工具包收集设备指纹信息,如设备 ID、模型和时区。有关 Amazon Cognito SDK 的更多信息,请参阅安装用户池 SDK

查看用户事件历史记录

注意

在新的 Amazon Cognito 控制台中,您可以在 Users(用户)选项卡中查看用户事件历史记录。

要查看某个用户的登录历史记录,您可以在 Amazon Cognito 控制台的 Users and groups(用户和组)中选择该用户。Amazon Cognito 会将用户事件历史记录保留两年。


            用户事件历史记录

每个登录事件都有一个事件 ID。该事件还包含对应的上下文数据,如位置、设备详细信息和风险检测结果。您可以使用 Amazon Cognito API 操作 AdminListUserAutEvents 或者使用 Amazon Command Line Interface 通过 admin-list-user-auth-events 来查询用户事件历史记录。

您还可以将事件 ID 与 Amazon Cognito 在记录事件时发放的令牌关联起来。ID 和访问令牌在其有效负载中包含此事件 ID。Amazon Cognito 还将刷新令牌的使用与原始事件 ID 相关联。您可以通过原始事件 ID 追溯到导致颁发 Amazon Cognito 令牌的登录事件的事件 ID。您可以跟踪系统中的令牌在特定身份验证事件中的使用。

提供事件反馈

事件反馈实时影响风险评估,并随着时间的推移改进风险评估算法。您可以通过 Amazon Cognito 控制台和 API 操作提供有关登录尝试有效性的反馈。

控制台的 Users and groups(用户和组)选项卡中列出了登录历史记录。您可以选择某个条目来将事件标记为有效或无效。您还可以通过用户池 API 操作 AdminUpdateAuthEventFeedback、Amazon CLI 命令 admin-update-auth-event-feedback 提供反馈。

发送通知消息

借助高级安全保护措施,Amazon Cognito 可以通知您用户的登录尝试。Amazon Cognito 还可以提示用户选择链接以指示登录是有效还是无效。Amazon Cognito 使用此反馈来提高用户池的风险检测准确性。

当登录尝试被评为低、中和高风险时,您希望如何使用自适应身份验证?部分中,选择将低、中和高风险案例通知用户


            通知用户

可以自定义通知电子邮件并同时提供明文和 HTML 版本。选择 Adaptive authentication notification messages (自适应身份验证通知消息) 中的 Customize (自定义) 来自定义电子邮件通知。要了解有关电子邮件模板的更多信息,请参阅 消息模板