Как назвать учетные данные Windows по умолчанию в моем коде? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть собственная реализация «поставщика учетных данных Windows».
В некоторых сценариях мои пользовательские учетные данные должны переключаться на учетные данные Windows по умолчанию, а пользователь должен видеть «поставщика учетных данных Windows», чтобы выполнить процесс входа в систему.
Как я могу выйти из своих «учетных данных» и назвать «учетные данные Windows» по умолчанию?

Ответы [ 2 ]

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

В новом сценарии поставщиков учетных данных Microsoft Windows вы не можете указать, какой другой пользователь поставщика должен использовать для входа в систему.

Единственное, что вы можете сделать - это принудительно войти в систему, используя своего собственного провайдера, или отказаться от входа в систему, используя своего провайдера.

Для этого вам необходимо:

  1. Установите pdwDefault на любое полезное значение и pbAutoLogonWithDefault на true внутри вызова на GetCredentialCount.

  2. Установите параметр CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE *pcpgsr внутри метода GetSerialization наодно из следующих значений:

    • CPGSR_RETURN_CREDENTIAL_FINISHED - для автоматического входа в систему,
    • CPGSR_RETURN_NO_CREDENTIAL_FINISHED - для отмены процесса входа в систему.

В любом случае ваш провайдер (тайл) потеряет фокус.Проверьте это doc .

Обновление

Вы можете удалить своего провайдера из всего процесса входа в систему, возвращая значение E_NOTIMPL изнутри вызовав метод SetUsageScenario.

Пользователь и / или пользовательский интерфейс входа в систему будут вынуждены использовать любого другого существующего поставщика (ов).

0 голосов
/ 15 мая 2019

LogonUI ищет всех «включенных» поставщиков учетных данных в системе и вызывает GetCredentialCount, чтобы получить все учетные данные для каждого конкретного поставщика.

Одна вещь, которую вы можете сделать, это вызвать ICredentialProviderEvents :: CredentialsChanged, который попросит logonUI «обновить» плитки. Вы можете отключить своего провайдера и каким-то образом включить его по умолчанию перед вызовом события.

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

...