我通过在.NET中实现IAuthenticationAdapter
来为ADFS 3.0设置自定义MFA提供程序。
该自定义适配器生成随机代码,该代码被发送到用户的移动电话。
我想限制用户输入随机代码的次数,以帮助防止暴力攻击。
我使用重试计数器完成了此操作,我将其存储在传递给BeginAuthentication()
和TryEndAuthentication()
的上下文中。
然而,我刚刚发现,这个上下文不是服务器端的东西,而是加密并在隐藏的html字段中传输到客户端。
用户现在可以通过简单地导航到具有重试次数的先前值的上一页来绕过重试限制,并使用新代码重新提交。
我认为我只需要存储重试计数服务器端,但在哪里? 在文档中找不到任何相关内容。
我希望ADFS本身能以某种方式支持重试限制。
答案 0 :(得分:0)
在身份验证过程中,我没有找到存储数据的服务器端位置。我相信没有。
所以我决定删除重试功能,从而删除服务器端会话数据的neeed。 我的准时密码验证模块可以不使用此功能。
尽管如此,这确实让我很困惑。当然,更复杂的身份验证模块需要一些地方来跟踪服务器端身份验证的进度。