如何定义凭据提供程序使用方案

时间:2019-05-02 15:58:54

标签: c++ windows winlogon credential-providers

我目前正在尝试了解如何创建自定义凭据提供程序。

我有一个样本可以帮助我。此示例特别为WinLogon实现ICredentialProvider和ICredentialProviderFilter。 我的工作是实施CPUS_CREDUI使用场景。

但是,在最初的实现中我没有很多事情,所以我什至不能指望自己做一个实现。

我找到的所有文档仅说明每个部分的实际作用。这是我脑海中唯一“足够清晰”的部分。

问题是我无法将这些部分连接在一起。

Windows似乎调用了不同的功能。我怎么知道调用者是什么,使用了哪些参数? 如果我知道,我可能会对整个过程有更好的了解。

例如:

  • 有一个CREDENTIAL_PROVIDER_USAGE_SCENARIO类型的循环参数,该参数似乎改变了代码中进一步初始化CP的方式。 它似乎首先在CredentialProvider构造函数中定义,但由于我不知道构造函数的调用者是什么... 我猜想它是WinLogon调用的,但是如果是这样,实际上定义参数的是什么?

  • 样本日志始终将此参数值显示为“ CPUS_LOGON”。 如果这是WinLogon调用CP构造函数的结果(如果我以前的假设是正确的),那么CPUS_CREDUI自从登录后便如何调用?

这是我到目前为止的主要问题。谢谢有人能照亮我。

我也会为您提供其他所有信息。

1 个答案:

答案 0 :(得分:1)

看看微软的docs 对您的凭据提供程序的第一个呼叫将是SetUsageScenario

HRESULT SetUsageScenario(
    CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
  DWORD                              dwFlags
);

第一个参数是场景。
如果您的提供者不是为所提供的方案设计的,则只需返回E_INVALIDARG