我有这个漂亮的 PAM 模块,它可以验证每个会话(如桌面会话)的身份验证,并根据某些标准允许或阻止它。我想在 Windows 7 上做同样的事情。
现在,这可能听起来很愚蠢或微不足道,但我真的不知道我在 Windows 系统上的方式,因此想要一些关于如何实现类似功能的指针(即在例如时查询的服务或模块用户尝试启动会话。)
我认为您正在寻找的是Subauthentication Package ,但您可以通过Credential Provider获得一些里程。
子身份验证包是一个动态链接的库,本地安全机构或 Kerberos 密钥分发中心 (KDC) 将在身份验证成功后但在授予用户访问权限之前调用它。
Windows 将在本地或通过 Kerberos 对用户进行身份验证,具体取决于您的配置。您必须构建一个导出两个函数的 DLL:
Msv1_0SubAuthenticationRoutine
(不要求交互式登录或 Kerberos)Msv1_0SubAuthenticationFilter
您将代码放入该 DLL 中,如果允许用户登录,则返回 STATUS_SUCCESS 或其他错误代码之一。您不能假设您可以访问密码。
如果您通过 Kerberos 登录,您必须在 KDC 上注册您的 DLL。这使得很难针对某些本地信息(例如硬件或生物识别设备)进行身份验证。
所以也许凭证提供者可以帮助你,但这不是最优雅的解决方案。它旨在捕获凭据并将其提供给身份验证包。但是 Microsoft 让 shure 凭据提供程序不会锁定用户,因此它可能并不总是被调用(在安全模式下)并且用户可以安装另一个 CP 等。所以为了完整起见,我提到它。