问题标签 [credential-providers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Windows 凭据提供程序远程登录
我正在尝试从一个工作站(本地)上的智能卡读取凭据,然后将其发送到另一个工作站(远程)并使用它从凭据提供程序中登录到该工作站。
我一直在搜索,并且研究了几个星期,但没有找到任何人展示或告诉如何做到这一点。
我在https://www.idrix.fr/Root/Samples/LsaSmartCardLogon2.cpp找到了一些对优秀作品的引用,这是智能卡凭证提供者的工作代码,但不幸的是要求凭证提供者可以直接访问带有凭证的智能卡。
我正在使用的实际代码似乎有点长,无法包含在帖子中,所以我想我尝试使用 sudo 代码提出问题。在本地工作站上:
在自定义凭据提供程序中运行的远程工作站上:
LogonUI.exe 显示“指定的登录会话不存在。它可能已经终止。” 此接缝对应于 Windows 错误代码 1312。似乎大多数为此错误代码而苦苦挣扎的开发人员在使用 SSL 证书配置 IIS 时遇到了麻烦。我没有发现与凭据提供程序有关的此错误的参考。各种线程似乎表明 LogonUser 只是 LSALogonUser 的包装器,并且来自 ICredentialProviderCredential::GetSerialization 的返回值将传递给 LSALogonUser。我使用编组凭证成功调用 LogonUser 的事实似乎表明我走在正确的轨道上,但我无法验证这一点,也无法弄清楚我错过了什么。我想尽量避免需要将凭据存储在远程工作站上的解决方案,因为它通常是域管理员凭据。有什么想法吗?关于如何进行的任何建议?
谢谢
c# - C# 中的 Windows 凭据提供程序
我正在开展一个学校项目,我应该在其中修改 Windows 登录 UI 中提供凭据的方式。经过一番搜索,我找到了著名的 Vista RTM (Longhorn) 示例和技术文档。我发现所有示例都是用 C++ 开发的。
由于我没有任何 C/C++ 经验,并且我认为自己是一个体面的 C# 程序员,我想知道是否可以执行此 C#。
我还需要与 REST API 交换数据以验证登录,因此 C# 会更友好。
我找到了这个https://stackoverflow.com/a/23496878/3626447,但是@mageos 提供的信息太“原始”了。
有人知道一些有用的资源吗?
c++ - 如果启用了 dontdisplaylastusername,loginui.exe 会不断崩溃,并出现 Microsoft 凭据提供程序 V2 示例
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "dontdisplaylastusername"=dword:00000001
我试图构建一个自定义 V2 凭据提供程序,并基于 Microsoft 的代码示例。自定义凭据提供程序在大多数情况下都按预期工作。但是,如果我通过策略或通过设置此注册表设置启用以下设置dontdisplaylastusername并尝试进入登录屏幕,光标只会旋转,屏幕只会闪烁,我永远无法让登录屏幕出现. 在没有安装任何自定义 v2 凭据提供程序的情况下,我能够正确进入“其他用户”屏幕。
我怎样才能解决这个问题?我尝试在我的自定义版本中添加一个用户名字段,因为微软的版本没有,但这并没有改变任何东西并且仍然崩溃。
有任何想法吗?
这是我用于示例的 github 存储库
以下是为示例凭据提供程序记录的故障示例。
c++ - Windows 10 CredentialProvider 平铺图像透明度
不久前,我为 Windows 7 创建了一个 CredentialProvider,它为用户显示了一个自定义平铺图像。当我在 Windows 10 上测试我的 CredentialProvider 时,我注意到平铺图像不像通常的 Windows 用户图像那样是圆形的,所以我假设我必须提供我自己的具有透明度的圆形图像。我试图加载一个圆形的透明PNG并HBITMAP
在ICredentialProviderCredentiall::GetBitmapValue()
函数中传递相应的。不幸的是,PNG 的背景不是透明的,而是白色的。有没有办法显示实际的透明度?由于HBITMAP
是由 LogonUI 本身绘制的,因此我无法修改绘图行为。
为了创建HBITMAP
我的 PNG 资源,我使用以下函数:
我还尝试了背景颜色参数的其他值, GetHBITMAP()
例如AlphaMask
and AlphaShift
,但是这些也不起作用(相反,白色背景变成了黑色)
有什么方法可以实现我的目标吗?
c# - 在客户凭据提供程序中使用 NFC 时遇到问题
所以我试图让我的自定义 Windows 凭据提供程序使用 NFC 登录(不使用第三方应用程序,请不要推荐这个)。
我需要它与 Windows.Networking.Proximity 库一起工作,该库在我用 VB 编写的测试脚本以及我用 C# 制作的 DLL 中都可以正常工作,但是我不太确定如何将它添加到凭据提供程序。
我尝试使用 LoadLibrary 将我创建的 DLL 添加到凭据提供程序,尽管这不起作用,并且可能与不喜欢 .NET 的凭据提供程序有关。
我也在考虑尝试启动 Windows 用来检测 NFC 读取的服务,但我无法找到它正在使用的进程。
有没有人有过这种事情的经验,因为谷歌似乎并没有被证明太有帮助?
非常感谢,
罗文
(编辑:这是基于 Microsoft 的 Sample Credential Provider V2)
kerberos - KERB_CERTIFICATE_LOGON 和自定义 KSP
我正在实施基于 Microsoft 白皮书“在 Windows 7 和 Windows Server 2008 R2 中使用一次性密码进行强身份验证”的 OTP 解决方案。
该白皮书相关部分的摘要是通过为 Windows CNG 子系统实现自定义密钥存储提供程序 (KSP) 来从本质上伪造智能卡读卡器的存在。但是,按照所述说明进行操作后,我无法在需要时让操作系统使用我的自定义 KSP。
在我的凭据提供程序中,我正在创建一个具有 KERB_CERTIFICATE_LOGON 和 KERB_SMARTCARD_CSP_INFO 结构的身份验证包。根据需要在 KERB_SMARTCARD_CSP_INFO 中引用了我的自定义 KSP(它也已正确注册,可以枚举,并且可以与 NCrypt API 一起使用)。但是,在 ICredentialProviderCredential::GetSerialization 返回后(甚至没有将 DLL 加载到内存中)或在我的独立测试应用程序中调用 LsaLogonUser() 期间,操作系统永远不会加载它。
该问题与 MSDN 论坛中描述的问题相同(没有任何答案),我得出了相同的结论,即问题与 KERB_SMARTCARD_CSP_INFO 的内容有关(示例用法可以在此处找到)-但是由于几乎没有文档和这种罕见情况没有一个例子,我不知道该怎么办......
c++ - 凭据提供程序和命名管道
我正在尝试通过凭据提供程序中的命名管道与 Windows 服务进行通信,但我不太确定将命名管道代码放置在 COM 接口结构中的哪个位置。我使用 SampleHardwareEventCredentialProvider(来自 Microsoft)作为测试平台,并在 CSampleCredential.cpp 中创建了以下代码:
这显然不起作用,除非我将其放置在错误的位置或未初始化 CP 以侦听来自 Windows 服务的传入消息?我该怎么做?
c++ - 登录时未通过凭据提供程序加载 KSP(密钥存储提供程序)
我正在创建一个 Windows 凭据提供程序,以使用本文所述的证书登录到 Windows 域。这意味着创建一个自定义 KSP,在创建身份验证包时将由 LsaLogonUser 调用。
我设法创建了自定义 KSP 并在直接调用 LsaLogonUser 的独立应用程序中成功对其进行了测试。基本上创建身份验证包并将其传递给 LsaLogonUser,加载 KSP,调用一堆函数并验证用户在状态码和加载的用户配置文件上返回成功结果。
但是,当我在凭据上的 GetSerialization 期间使用相同的身份验证包时,KSP 甚至不会加载,并且我得到 ReportResult(NTSTATUS ntsStatus, NTSTATUS ntsSubstatus, ....) 报告的 0xc000000d(参数不正确) nts 状态。
这是我在测试中使用的 GetSerialization 代码:
我的问题是为什么在直接从 LsaLogonUser 调用身份验证包时加载 KSP,而不是在 Windows 登录期间从凭据提供程序调用。
InitialiseKerbCertificateLogon 代码为:
c# - 如何通过用户名/域检查用户是否是管理员组的成员
如果我拥有的唯一信息是用户名(和域,如果相关),我如何知道用户是否是管理员组的成员?
我确实知道如何为当前用户获取此信息。但是,就我而言,我需要为尚未登录的用户获取此信息(我正在使用凭据提供程序)。因此,我只能使用用户名和域。
此问题仅与 Windows 机器相关。
我正在使用 C#/C++。
我知道 C# WindowsPrincipal 类,如下所示:WindowsPrincipal
我也知道 IsUserAnAdmin() Windows API。但是,我不能使用这些方法,因为我正在处理尚未登录的用户(我的代码在用户实际进入 Windows 机器之前执行)
windows - Win Api 自定义凭据提供程序:Windows 登录后调整大小的对话框
我创建了我的自定义凭据提供程序以使用智能卡登录 Windows。当我插入智能卡时,输入密码的对话框显示为适当的大小,但是一旦我登录到系统,每次我锁定和解锁系统时,对话框都会调整大小并在此之后保持相同的大小。一旦系统重新启动或再次登录,它只会获得原始大小。
你能帮我理解吗
- 为什么在登录后调整坐标大小并在整个用户窗口登录会话中保持固定大小?
- 如何固定对话框的大小。