【问题标题】:Smart Card Removal policy is not enforced when performing SSO using Custom Credential Provider使用自定义凭据提供程序执行 SSO 时不强制执行智能卡移除策略
【发布时间】:2019-04-04 01:51:51
【问题描述】:

我创建了一个 EFI 预启动应用程序,在我输入传递给 Windows 以使用我的凭据提供程序登录(单点登录)的用户凭据。

我有一个组策略“交互式登录:智能卡移除行为”设置为“锁定工作站:当智能卡被移除时,工作站被锁定,允许用户离开该区域,随身携带他们的智能卡,并且仍然保持受保护的会话。”

因此,如果我重新启动计算机并使用我的凭据提供程序登录,那么当我移除智能卡时不会强制执行组策略。但是,如果我锁定并解锁机器,然后取出智能卡,组策略就会起作用,机器就会被锁定。

根据这篇文章https://blogs.technet.microsoft.com/instan/2010/03/08/deconstructing-the-smartcard-removal-policy-service/ 我可以看到,当我使用智能卡 SSO(我的自定义凭据提供程序)登录时,未在 \HKLM\Software\Microsoft\Windows NT\CurrentVersion\Removal Policy 下创建注册表项。

所以我的问题是,我的凭据提供程序中是否缺少某些内容?我是否必须从我的凭据提供程序调用任何 API 才能使 GPO 工作,或者我是否必须在我的凭据提供程序中实现相应的逻辑,以便 GPO 由智能卡删除服务强制执行?

【问题讨论】:

  • 什么是GPO
  • 组策略对象 (GPO)

标签: authentication smartcard interactive winlogon credential-providers


【解决方案1】:

在启动服务之前必须为其准备注册表值。

  1. 注册表路径SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Removal Policy中的参数
  2. 名称必须是登录会话 ID(文本“0”、“1”等)
  3. 值是智能卡读卡器名称及其状态的二进制组合(如文章中所述)。

在我的例子中是这样的:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Removal 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

它被解码为带有NULL 终止符和DWORD0x00190000 的Unicode 字符串“AKS ifdh 0”,其中0x0019 是自启动以来智能卡插入和移除读卡器的计数。

【讨论】:

  • 感谢您的回复。那么我是否必须从我的凭据提供程序设置此注册表?
  • 是的。在我的情况下,我在打包凭据之后并从 GetSerialization 方法返回控制权之前这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 2022-08-02
相关资源
最近更新 更多