我已经为Windows-7登录创建了一个子身份验证包 . 它成功地用于本地帐户登录 . 然后,我尝试在Windows Server 2008 r2中为活动目录实现相同的子身份验证包 . 我将我的DLL放在 Windows\System32\
文件夹中,并修改了Kerberos的注册表值为this Microsoft文档解释为子身份验证DLL .
我设置的值是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos
值: Auth0
设置为 C:\Windows\System32\SubAuth.dll
(我在这里吗?) .
但是在进行身份验证时,我注意到我的子身份验证包没有被调用,因为在针对AD对客户端计算机上的用户进行身份验证时,我不会被要求提供第二个因素 .
我在设置中遗漏了什么,或者我的子身份验证包中有一些东西需要更改 .
如果我在这里错过任何信息,请告诉我 .
PS:子身份验证包是根据Microsoft的凭据提供程序文档(在Msv1_0SubAuthenticationFilter例程中)开发的 .
2 回答
为了实现我所提出的问题,我需要在Microsoft的身份验证包中进行攻击 .
这就是我做的 .
与活动目录通信并进行身份验证w.r.t. AD,我必须在凭证提供商之前完成 .
所以我的解决方案的控制流程在Credential提供程序中如下所示:
检查用户是否已连接到网络 .
如果是,则与AD服务器通信,AD服务器是预定义的,并根据AD条目验证用户 .
如果用户已经过验证,则仅在凭证提供程序中询问第二个因子,然后在成功验证时,将用户传递给子验证模块并绕过子验证中的第二个因子 .
如果用户未连接到网络,则使用sub-auth模块进行验证 .
所以基本上,如果用户需要验证AD并稍后在子authh模块中执行密码验证,我必须首先执行第二次FA .
看起来这是设计 - 来自kerberos \ ssv1_0 subauth包的Msv1_0SubAuthenticationFilter例程将不会被调用用于缓存域交互式登录 .
对于交互式登录,сall链将是这样的:
但对于缓存的交互式登录сall链看起来像: