c++ - 如何在我的代码中调用默认 Windows 凭据?
问题描述
我有自己的“Windows 凭据提供程序”实现。
在某些情况下,我的自定义凭据必须切换到 Windows 默认凭据,并且用户必须看到“Windows 凭据提供程序”才能执行登录过程。
如何退出我自己的“凭据”并调用默认的“Windows 凭据”?
解决方案
在 Microsoft Windows 凭据提供程序的新方案中,您无法指定其他提供程序用户必须使用哪个提供程序用户登录系统。
您唯一能做的就是使用您自己的提供商强制登录或使用您的提供商拒绝登录。
为此,您必须:
设置
pdwDefault
为任何有用的值并设置pbAutoLogonWithDefault
为true
调用内部GetCredentialCount
。将方法
CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE *pcpgsr
内部的参数设置GetSerialization
为以下值之一:CPGSR_RETURN_CREDENTIAL_FINISHED
- 做自动登录,CPGSR_RETURN_NO_CREDENTIAL_FINISHED
- 取消登录 UI 进程。
在任何情况下,您的提供者(磁贴)都会失去焦点。看看这个文档。
更新
E_NOTIMPL
您可以通过从方法调用内部返回值来从整个登录过程中删除您的提供程序SetUsageScenario
。
用户和/或登录 UI 将被迫使用任何其他现有的提供程序。
推荐阅读
- python - keras:如何编写定制的损失函数来聚合帧级预测到歌曲级预测
- javascript - NetSuite上的ClientScript如何知道记录在哪种模式下?
- symfony - 如何升级 symfony/phpunit-bridge 以使用 PHPUnit 7?
- php - 数据库未从 Ajax POST 更新
- php - 将字符串分解为多级对象(或数组)
- mysql - 左加入“选择”
- java - 使用流进行从数组到列表的空安全转换
- python - ValueError:形状(259,2)和(1,33)未对齐:2(dim 1)!= 1(dim 0)
- python - 找不到从终端运行的 Python 模块
- ruby-on-rails - 以一种方式加入,但不是另一种