首页 > 解决方案 > 如何在我的代码中调用默认 Windows 凭据?

问题描述

我有自己的“Windows 凭据提供程序”实现。
在某些情况下,我的自定义凭据必须切换到 Windows 默认凭据,并且用户必须看到“Windows 凭据提供程序”才能执行登录过程。
如何退出我自己的“凭据”并调用默认的“Windows 凭据”?

标签: c++windowscredential-providers

解决方案


在 Microsoft Windows 凭据提供程序的新方案中,您无法指定其他提供程序用户必须使用哪个提供程序用户登录系统。

您唯一能做的就是使用您自己的提供商强制登录或使用您的提供商拒绝登录。

为此,您必须:

  1. 设置pdwDefault为任何有用的值并设置pbAutoLogonWithDefaulttrue调用内部GetCredentialCount

  2. 将方法CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE *pcpgsr内部的参数设置GetSerialization为以下值之一:

    • CPGSR_RETURN_CREDENTIAL_FINISHED- 做自动登录,
    • CPGSR_RETURN_NO_CREDENTIAL_FINISHED- 取消登录 UI 进程。

在任何情况下,您的提供者(磁贴)都会失去焦点。看看这个文档

更新

E_NOTIMPL您可以通过从方法调用内部返回值来从整个登录过程中删除您的提供程序SetUsageScenario

用户和/或登录 UI 将被迫使用任何其他现有的提供程序。


推荐阅读