В общем, с рутокеном всё оказалось плохо даже под Windows.
Итак, исходные условия:
Windows - AD+CA+OCSP
Client - Windows 8.1 x64, rutoken & etoken latest drivers installed, Horizon View Client 3.3 configured to use SmartCard over PCoIP
VMware - Horizon Connection Server v6, smartcard authentication configured and allowed
Сертификаты созданы из штатного шаблона Smart Card Logon.
Проверка:
Установлен eToken, при запуске Horizon Client предлагает ввести PIN-код от свистка и успешно логинит в виртуальный десктоп. В логе это выглядит так:
2015-05-20 16:25:17.556+03:00 INFO (1334) [libcdk] Alt name 1 matches hostname stand-vdi-con.maindomain.ivk.ru
2015-05-20 16:25:17.556+03:00 INFO (1334) [libcdk] Skipping non-useful EKU: TLS Web Client Authentication
2015-05-20 16:25:17.556+03:00 INFO (1334) [libcdk] Found a valid EKU: TLS Web Server Authentication
2015-05-20 16:25:17.556+03:00 INFO (1334) [WinCDK] Services::AuthInfoLoadCallback : X509_Certificate Callback: Entry.
2015-05-20 16:25:17.556+03:00 INFO (1334) [WinCDK] Services::AuthInfoLoadCallback : X509_Certificate Callback: Exit.
2015-05-20 16:25:17.556+03:00 INFO (1334) [WinCDK] Services::AuthInfoCallback : X509_Certificate Callback: Entry.
2015-05-20 16:25:17.556+03:00 INFO (1334) [WinCDK] Services::AuthInfoCallback : X509_Certificate Callback: Exit.
2015-05-20 16:25:17.556+03:00 INFO (1334) [libcdk] TaskCombiner: SetResult for CdkGetConfigurationTask(PEND).
2015-05-20 16:25:17.556+03:00 INFO (1334) [libcdk] TaskCombiner: CdkGetConfigurationTask(PEND) removed, group task num:0, total task num:3.
2015-05-20 16:25:17.825+03:00 INFO (1334) [WinCDK] AuthDlg::OnInitDialog : [User] Enter Init.
2015-05-20 16:25:17.828+03:00 INFO (1334) [WinCDK] AuthDlg::UpdateWindowState : Update auth dialog. The auth type is CDK_AUTH_INFO_TYPE_X509_CERTIFICATE.
2015-05-20 16:25:17.829+03:00 INFO (1334) [WinCDK] AuthDlg::OnInitDialog : [User] Exit Init.
2015-05-20 16:25:25.840+03:00 INFO (1334) [WinCDK] AuthDlg::OnOk : [User] Enter X509_Certificate:Ok.
2015-05-20 16:25:25.890+03:00 INFO (1334) [WinCDK] AuthDlg::EndDialog : [User] Enter EndDialog(1).
2015-05-20 16:25:25.892+03:00 INFO (1334) [WinCDK] AuthDlg::EndDialog : [User] Exit EndDialog(1).
2015-05-20 16:25:25.892+03:00 INFO (1334) [WinCDK] AuthDlg::OnOk : [User] Exit X509_Certificate:Ok.
2015-05-20 16:25:25.894+03:00 INFO (1334) [WinCDK] AuthDlg::OnDestroy : [User] Enter Destroy.
2015-05-20 16:25:25.894+03:00 INFO (1334) [WinCDK] AuthDlg::OnDestroy : [User] Exit Destroy.
2015-05-20 16:25:25.897+03:00 INFO (1334) [libcdk] Send request successful: 03564380
2015-05-20 16:25:25.941+03:00 INFO (1334) [libcdk] Verify server's certificate for Request 0359F700
2015-05-20 16:25:25.941+03:00 INFO (1334) [libcdk] Find rpc request 0359F700 from list
2015-05-20 16:25:25.941+03:00 INFO (1334) [libcdk] Alt name 1 matches hostname stand-vdi-con.maindomain.ivk.ru
Ок, заканчиваю сессию, вынимаю eToken. Теперь то же самое с рутокеном:
Во-первых, никакого запроса на ввод PIN-кода не было, а просто выдан был штатное окно ввода учётных данных логин/пароль/домен. Ну и в логе тоже ничего про чтение сертификата нет
2015-05-20 16:30:00.518+03:00 INFO (1CBC) [libcdk] Alt name 1 matches hostname stand-vdi-con.maindomain.ivk.ru
2015-05-20 16:30:00.518+03:00 INFO (1CBC) [libcdk] Skipping non-useful EKU: TLS Web Client Authentication
2015-05-20 16:30:00.518+03:00 INFO (1CBC) [libcdk] Found a valid EKU: TLS Web Server Authentication
2015-05-20 16:30:00.519+03:00 INFO (1CBC) [WinCDK] Services::AuthInfoLoadCallback : X509_Certificate Callback: Entry.
2015-05-20 16:30:00.519+03:00 INFO (1CBC) [WinCDK] Services::AuthInfoLoadCallback : X509_Certificate Callback: Exit.
2015-05-20 16:30:00.519+03:00 INFO (1CBC) [WinCDK] Services::AuthInfoCallback : X509_Certificate Callback: Entry.
2015-05-20 16:30:00.519+03:00 INFO (1CBC) [WinCDK] Services::AuthInfoCallback : X509_Certificate Callback: Exit.
2015-05-20 16:30:00.519+03:00 INFO (1CBC) [libcdk] TaskCombiner: SetResult for CdkGetConfigurationTask(PEND).
2015-05-20 16:30:00.519+03:00 INFO (1CBC) [libcdk] TaskCombiner: CdkGetConfigurationTask(PEND) removed, group task num:0, total task num:3.
2015-05-20 16:30:00.710+03:00 INFO (1CBC) [libcdk] Send request successful: 02C00F38
2015-05-20 16:30:00.780+03:00 INFO (1CBC) [libcdk] Verify server's certificate for Request 02C0FDF0
2015-05-20 16:30:00.780+03:00 INFO (1CBC) [libcdk] Find rpc request 02C0FDF0 from list
2015-05-20 16:30:00.781+03:00 INFO (1CBC) [libcdk] Alt name 1 matches hostname stand-vdi-con.maindomain.ivk.ru
То есть возникает ощущение, что API, используемый Horizon View Client'ом, не совместим (или не совсем совместим) с API ruToken'а. Ну, то есть словно приложение вообще не видит этот ридер.
Ваши соображения?