Как определяются сценарии использования провайдера учетных данных - PullRequest
0 голосов
/ 02 мая 2019

В настоящее время я пытаюсь понять, как создаются пользовательские поставщики учетных данных.

У меня есть образец, чтобы помочь мне. Этот пример особенно реализует ICredentialProvider и ICredentialProviderFilter для WinLogon. Моя задача - реализовать сценарий использования CPUS_CREDUI.

Тем не менее, есть много вещей, которые я не понимаю в первоначальной реализации, поэтому я даже не могу ожидать, что сделаю свою собственную реализацию.

Вся документация, которую я нашел, объясняет только то, что на самом деле делает каждая часть. Какая единственная часть, «достаточно ясная», на мой взгляд.

Проблема в том, что я не могу соединить эти части вместе.

Казалось, разные функции вызываются самой Windows. Как я могу узнать, кто звонил, какие параметры используются, такого рода вещи? Если бы я знал, я мог бы лучше понять весь процесс.

Например:

  • Существует рекуррентный параметр типа CREDENTIAL_PROVIDER_USAGE_SCENARIO, который, кажется, изменяет способ инициализации CP далее в коде. Кажется, что он сначала определен в конструкторе CredentialProvider, но, поскольку я не знаю, кто является вызывающим конструктором ... Я предполагаю, что он вызывается WinLogon, но если это так, что на самом деле определяют параметры?

  • В журналах выборки значение этого параметра всегда отображается как «CPUS_LOGON». Если это является следствием того, что конструктор CP был вызван WinLogon (если моя предыдущая гипотеза верна), как CPUS_CREDUI может быть вызван, так как он находится после входа в систему?

Это основные вопросы, которые у меня есть. Спасибо, если кто-то может меня осветить.

Я также открыт для любой дополнительной информации, которую вы бы получили для меня.

1 Ответ

1 голос
/ 03 мая 2019

Посмотрите на документы Microsoft Один из первых звонков вашему провайдеру учетных данных будет SetUsageScenario

HRESULT SetUsageScenario(
    CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
  DWORD                              dwFlags
);

Первый параметр - сценарий.
Если ваш провайдер не предназначен для указанного сценария, вы можете просто вернуть E_INVALIDARG.

...