Custom Credential Provider: вход в систему пользователей, которые не отображаются на экране входа в систему.

Мы внедряем настраиваемый поставщик учетных данных на основе токенов HW для Windows 10 на основе ICredentialProvider, ICredentialProviderCredential и подобных.

Это прекрасно работает для пользователей, которые отображаются в виде плиток на экране входа в систему: когда токен подключается, мы запрашиваем повторную нумерацию учетных данных, вызывая ICredentialProviderEvents::CredentialsChanged, а затем указываем в ICredentialProvider::GetCredentialCount, что у нас есть учетные данные, которые должны быть установлены по умолчанию и выполнять автоматический вход в систему.

Проблема в том, что в Windows 10 в списке плиток отображаются не все локальные пользователи, а только те, кто в данный момент вошел в систему, а также последний пользователь, который входил в систему ранее.
Если мы вернем учетные данные для пользователя не отображается в тайлах, но с валидным SID и указать его по умолчанию и чтобы авторизоваться автоматически - ничего не происходит, т.е. учетные данные ICredentialProviderCredential::GetSerialization не вызываются.

Как мы можем выполнить автоматический вход в систему для пользователя, который не отображается?

Это может сделать встроенный провайдер на основе отпечатков пальцев.


person White hawk    schedule 23.07.2019    source источник


Ответы (1)


Я просто должен был обойти это и пройти мимо. Я начал с Windows Vista, а позже добавил много кода и логики для поддержки новых функций Windows 10, таких как эта, о которой вы говорите.

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

Затем вы можете изменить его и выполнить автоматический вход под любым пользователем.

person Alexander    schedule 23.07.2019
comment
Вы имеете в виду возврат S_FALSE из ICredentialProviderCredential2::GetUserSid? - person White hawk; 23.07.2019
comment
Согласно документам Microsoft, да. Вы даже можете не поддерживать интерфейс ICredentialProviderCredential2 для этой плитки. - person Alexander; 23.07.2019