我已经创建了一个EFI预启动应用程序。在中,我输入了用户凭据,这些凭据将传递到窗口,以便使用凭据提供程序登录(单点登录(。
我有一个组策略"交互式登录:智能卡移除行为"设置为"锁定工作站:移除智能卡时工作站被锁定,允许用户离开该区域,随身携带智能卡,并且仍然保持受保护的会话。">
因此,如果我重新启动机器并使用我的凭据提供程序登录,则在删除智能卡时不会强制执行组策略。但如果我锁定并解锁机器,然后取出智能卡,则组策略有效,机器将被锁定。
根据本文https://blogs.technet.microsoft.com/instan/2010/03/08/deconstructing-the-smartcard-removal-policy-service/当我使用智能卡SSO(我的自定义凭据提供程序(登录时,我可以看到注册表项不是在\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Removation Policy下创建的。
所以我的问题是,我的凭证提供商是否遗漏了什么?我是否必须从我的凭据提供程序调用任何API才能使GPO工作,或者我是否必须在凭据提供程序中实现相应的逻辑,以便由智能卡删除服务强制执行GPO?
在启动服务之前,您必须为其准备注册表值。
- 注册表路径
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Removal Policy
中的参数 - 它的名称必须是登录会话id(文本"0"、"1"等(
- 值是智能卡读卡器名称及其状态的二进制组合(如文章中所述(
在我的情况下,它看起来像这样:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionRemoval Policy]
"1"=hex:41,00,4b,00,53,00,20,00,69,00,66,00,64,00,68,00,20,00,30,00,00,00,00,00,1f,00
它被解码为Unicode字符串"AKS ifdh 0",带有NULL
终止符和DWORD
值0x00190000
,其中0x0019
是自启动以来智能卡在读卡器中的插入和移除计数。