Здесь есть несколько различных компонентов программного обеспечения.
Первый - это сама карта. Чтобы выполнить цифровую подпись, CAC должен находиться в «проверенном» состоянии, то есть после ввода карты был введен PIN-код. Кроме того, каждый ключ на карте имеет флаг, указывающий, должен ли PIN-код вводиться каждый раз, когда используется ключ. Я не проверял, но я думаю, что это задано для пары ключей электронной почты на CAC. Таким образом, вам нужно будет найти, какие ключи имеют этот флаг «всегда проверять», и настроить средство проверки пути на службе, чтобы принимать только эти ключи. Возможно, вы сможете потребовать определенный OID при использовании расширенного ключа или исключить некоторые из промежуточных сертификатов DoD из построения пути (возможно, пометить их как отозванные).
Промежуточное программное обеспечение на компьютере, разговаривающее с картой, также может кэшировать PIN-код и предоставлять его на карточке всякий раз, когда карта указывает, что для нее требуется PIN-код, прежде чем он завершит операцию. Я думаю, что ActivClient делал это с помощью функции кеширования PIN-кода через версию 6, но в версии 7 этот параметр, похоже, пропал без вести. Я не нашел ничего подобного в встроенной поддержке PIV Windows. Эта «функция» может поставить под угрозу безопасность, поэтому я предполагаю, что она была умышленно удалена и не было каких-либо хакеров реестра или иначе, чтобы восстановить поведение. Это то, что вы бы не контролировали, если только вы не управляете машинами пользователей; не существует HTTP-заголовка или параметра TLS, который вы можете использовать для принудительного ввода PIN-кода. Но с новыми системами это не должно быть проблемой.
На стороне сервера должно быть выполнено полное рукопожатие, чтобы клиент выполнял аутентификацию. Аутентификация клиента не произойдет, если существует действительный сеанс TLS. Таким образом, вам необходимо найти способ сделать недействительным сеанс TLS (а не сеанс приложения, который, вероятно, связан с HTTP-файлом cookie), перед тем, как запрашивать аутентификацию, или направлять запрос проверки подлинности на другой интерфейс, который не имеет сеансов.
Пожалуйста, поделитесь тем, как этот вопрос был разрешен. :) –
@ Kevin Я отбросил это требование, объяснив клиенту, что тайм-аут на CAC-карте полностью не зависит от браузера. С точки зрения безопасности не рекомендуется пытаться вмешиваться в нормальное функционирование. Их охранник согласился с тем, что нет необходимости, чтобы клиент каждый раз входил в контакт; лучший подход заключается только в том, чтобы вернуться, если он истек. – adg