如何在自定义身份验证lambda触发器中使用AWS Cognito的自适应身份验证安全启发式技术?

时间:2020-01-26 14:41:29

标签: aws-lambda amazon-cognito amazon-cognito-triggers

我正在使用AWS Cognito自定义身份验证流程。我不依靠Cognito来做MFA。我想利用Cognito的高级安全功能中的自适应身份验证安全启发式技术。不幸的是,触发器中的事件不包含此信息。根据自适应身份验证的风险级别,是否可能会有不同的自定义挑战集?

1 个答案:

答案 0 :(得分:0)

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

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

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

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