如何在自定义 auth lambda 触发器中使用 AWS Cognito 的自适应身份验证安全试探法?
How to use AWS Cognito's adaptive authentication security heuristics in custom auth lambda trigger?
我正在使用 AWS Cognito 自定义身份验证流程。我不依赖 Cognito 进行 MFA。我想利用 Cognito 高级安全功能中的自适应身份验证安全启发式方法。不幸的是,触发器中的事件不包含此信息。是否可以根据自适应身份验证的风险级别设置不同的自定义质询?
在 Cognito 将此信息包含在传递给触发器的事件中之前,这是一种解决方法。
根据应用程序客户端 ID 配置高级安全功能的不同规则。对于 App client id 1,配置自适应身份验证以在检测到风险时阻止用户登录。而对于App client id 2,配置为始终允许登录。
在自定义身份验证触发器 lambda 中,根据应用程序客户端 ID 决定挑战。所以当 app client 为 1 时,使用正常的登录挑战。当 app client id 为 2 时,向 client 发送额外的挑战。客户端应使用app client id 1登录,如果登录失败原因Unable to login because of security reasons
,则使用app client id 2登录。
遗憾的是,Cognito 没有单独的错误代码,因此不得不在响应中查找错误字符串。
这种方法确实要求其请求被认为有风险的客户发出第二个认知请求。对于该客户端来说,这将花费更长的时间,但至少大多数用户不会看到更慢的登录。
探索并放弃的一个选项是使用来自 lambda 的 Cognito admin api。这有两个问题。首先,每次登录都会因对 Cognito 的额外 http 请求而变慢。其次,您可以获取最后 n 个事件,但无法确保我们请求正确的事件。如果同时登录尝试,1 次无风险和 1 次高风险,并且 admin api returns 没有风险作为最后一个事件,那么两次登录都将无风险通过。
我正在使用 AWS Cognito 自定义身份验证流程。我不依赖 Cognito 进行 MFA。我想利用 Cognito 高级安全功能中的自适应身份验证安全启发式方法。不幸的是,触发器中的事件不包含此信息。是否可以根据自适应身份验证的风险级别设置不同的自定义质询?
在 Cognito 将此信息包含在传递给触发器的事件中之前,这是一种解决方法。 根据应用程序客户端 ID 配置高级安全功能的不同规则。对于 App client id 1,配置自适应身份验证以在检测到风险时阻止用户登录。而对于App client id 2,配置为始终允许登录。
在自定义身份验证触发器 lambda 中,根据应用程序客户端 ID 决定挑战。所以当 app client 为 1 时,使用正常的登录挑战。当 app client id 为 2 时,向 client 发送额外的挑战。客户端应使用app client id 1登录,如果登录失败原因Unable to login because of security reasons
,则使用app client id 2登录。
遗憾的是,Cognito 没有单独的错误代码,因此不得不在响应中查找错误字符串。 这种方法确实要求其请求被认为有风险的客户发出第二个认知请求。对于该客户端来说,这将花费更长的时间,但至少大多数用户不会看到更慢的登录。
探索并放弃的一个选项是使用来自 lambda 的 Cognito admin api。这有两个问题。首先,每次登录都会因对 Cognito 的额外 http 请求而变慢。其次,您可以获取最后 n 个事件,但无法确保我们请求正确的事件。如果同时登录尝试,1 次无风险和 1 次高风险,并且 admin api returns 没有风险作为最后一个事件,那么两次登录都将无风险通过。