失败后停止自动登录 - 自定义凭据提供程序Windows

时间:2017-09-22 08:54:31

标签: windows credential-providers

我已经在凭证提供商处采用了Widows示例,并使用它们作为参考构建了一个。我可以通过手动输入用户名和密码来无缝登录。我已经设定了

CustomCredential::SetSelected (__out BOOL* pbAutoLogon) {
    *pbAutoLogon = TRUE; // FALSE;
     return S_OK;
}

现在,选择Tile时,AutoLogon无缝地发生。

作为测试用例,我更改了密码,正如预期的那样,登录失败。失败后,将显示一条错误消息,当我单击“确定”(这是唯一选项)时,将重新提交凭据以进行重试。我们怎么能阻止这种行为?在身份验证失败后调用哪个方法?

我处理了ReportResult(),但没有帮助。

提前致谢。Error message (nothing to worry about), but after clicking this ok, its goes for retry. I want to stop this.

Error message (nothing to worry about), but after clicking this ok, its goes for retry. I want to st

1 个答案:

答案 0 :(得分:0)

已经有一段时间了 - 但我相信调用GetSerialization()会将序列化凭据返回给LogonUI。你也需要实现它。我认为凭证提供者样本有KERB_INTERACTIVE_UNLOCK_LOGON的工作代码。

您还可以在SetSelected()中有条件地更改* pbAutoLogon - 我会在我的凭据提供程序中执行此操作,具体取决于某些结果。

在GetSerialization将其结果返回给LogonUI后,将调用ReportResult()。在ReportResult()中你可以做一些事情,比如清除密码框(在示例代码中完成)。

如果您没有在GetSerialization中返回序列化凭据,那么我认为您可能会遇到原始帖子中列出的错误。在凭证样本中,在GetSerialization()中调用KerbInteractiveUnlockLogonPack(),这就是有效地“记录”用户的内容。

错误似乎是特定的 - “用户未被授予所请求的登录类型”,因此可能与您正在测试的用户的权利有关。

如果您使用的是远程桌面,请确保您的用户是正确群组的成员才能登录(https://support.jumpdesktop.com/hc/en-us/articles/216424183-General-RDP-You-must-be-granted-the-Allow-log-on-through-the-Terminal-or-Remote-Desktop-Services-Right-),或者如果是普通用户,则允许其进行交互式登录。

另外 - SetSelected()在你的凭据提供者被点击时被调用 - 我不确定它是否在每次登录尝试后被调用(我的猜测是它没有。)在我的凭证提供者中我是使用我使用SetSelected()显示的自定义登录对话框。