KERB_CERTIFICATE_LOGON и пользовательский KSP
Я внедряю решение OTP, основанное на официальном документе Microsoft " Строгая аутентификация с одноразовыми паролями в Windows 7 и Windows Server 2008 R2".
Краткое изложение соответствующей части этого документа заключается в том, чтобы по существу подделать присутствие устройства чтения смарт-карт путем реализации настраиваемого поставщика хранилища ключей (KSP) для подсистемы Windows CNG. Однако, следуя инструкциям, как описано, я не могу заставить мой пользовательский KSP использоваться операционной системой при необходимости.
В моем поставщике учетных данных я создаю пакет аутентификации со структурами KERB_CERTIFICATE_LOGON и KERB_SMARTCARD_CSP_INFO. Мой пользовательский KSP упоминается в KERB_SMARTCARD_CSP_INFO по мере необходимости (он также правильно зарегистрирован, может быть перечислен и может использоваться с API-интерфейсами NCrypt). Однако он никогда не загружается ОС после возврата ICredentialProviderCredential::GetSerialization (даже если DLL не загружается в память) или во время вызова LsaLogonUser() в моем отдельном тестовом приложении.
Проблема идентична описанной здесь на форумах MSDN (без каких-либо ответов), и я пришел к такому же выводу, что проблема связана с содержимым KERB_SMARTCARD_CSP_INFO (пример использования можно найти здесь) - однако из-за отсутствия документации и ни одного примера такого редкого случая я понятия не имею, что делать...