0

我正在使用 AWS Cognito 自定义身份验证流程。我不依赖 Cognito 进行 MFA。我想在 Cognito 的高级安全功能中使用自适应身份验证安全启发式。不幸的是,触发器中的事件不包含此信息。是否可以根据自适应身份验证的风险级别设置不同的自定义挑战?

4

1 回答 1

0

这是一种解决方法,直到 Cognito 将此信息包含在传递给触发器的事件中。根据应用客户端 ID 为高级安全功能配置不同的规则。对于 App 客户端 ID 1,配置自适应身份验证以在检测到风险时阻止用户登录。对于 App 客户端 ID 2,配置为始终允许登录。

在自定义身份验证触发器 lambda 中,根据应用客户端 ID 确定挑战。因此,当应用程序客户端为 1 时,请使用正常登录挑战。当应用程序客户端 id 为 2 时,向客户端发送额外的挑战。客户端应使用 app client id 1 登录,如果使用原因登录失败Unable to login because of security reasons,则使用 app client id 2 登录。

不幸的是,Cognito 没有单独的错误代码,因此必须查找错误字符串作为响应。这种方法确实要求请求被认为有风险的客户端发出第二个 cognito 请求。该客户端将花费更长的时间,但至少大多数用户不会看到较慢的登录。


<em>探索和放弃的一个选项是使用来自 lambda 的 Cognito admin api。这有两个问题。首先,每次登录都会被这个对 Cognito 的额外 http 请求减慢。其次,您可以获得最后 n 个事件,但无法确保我们请求正确的事件。如果同时尝试登录,1 个无风险和 1 个高风险,并且 admin api 返回无风险作为最后一个事件,则两个登录都将作为无风险通过。

于 2020-01-26T14:41:29.610 回答