在 ADFS 自定义身份验证适配器中存储重试计数器的位置

Where to store retry counter in ADFS custom authentication adapter

我正在通过在 .NET 中实施 IAuthenticationAdapter 为 ADFS 3.0 设置自定义 MFA 提供程序。 此自定义适配器会生成一个随机代码,该代码会传输到用户的手机 phone。

我想限制用户输入随机代码的次数,以帮助防止暴力攻击。 我使用存储在传递给 BeginAuthentication()TryEndAuthentication().

的上下文中的重试计数器完成了此操作

然而,我刚刚发现,这个上下文不是服务器端的东西,而是被加密并在隐藏的 html 字段中传输到客户端。

用户现在可以通过简单地导航到具有先前重试计数值的上一页并使用新代码重新提交来绕过重试限制。

我相信我只需要在服务器端存储重试计数,但是在哪里? 在文档中找不到任何关于此的内容。

我希望 ADFS 本​​身能以某种方式支持重试限制。

在验证过程中,我没有找到服务器端存储数据的地方。我相信有 none.

所以我决定删除重试功能,从而消除对服务器端会话数据的需求。 我的准时密码验证模块可以没有这个功能。

不过,这确实让我很困惑。当然,更复杂的身份验证模块需要一些地方来跟踪身份验证服务器端的进度。