Прежде всего вам потребуется веб-страница с поддержкой SSL.Вы не можете разработать его с помощью входящего в комплект веб-сервера разработки (cassini).Можно разработать такую модель аутентификации, используя IIS Express или локальный экземпляр IIS.Проверка подлинности SSL не может напрямую контролироваться вашим кодом и зависит от настроек папки веб-страницы IIS.Взгляните на эту статью .
Что касается работы с графическим интерфейсом, сертификаты обычно хранятся в хранилищах сертификатов, которые безопасны и не могут контролироваться из клиентских страниц / скриптов.Когда веб-браузер получает ответ с запросом согласования сертификата клиента, отображается диалоговое окно, специфичное для браузера / платформы, показывающее все совместимые клиентские сертификаты.На стороне сервера вы можете контролировать, какие сертификаты жизнеспособны для клиента, устанавливая соответствующие корневые сертификаты из доверенных центров сертификации.Однако вы не можете контролировать, какие сертификаты (если они хранятся на поддерживаемой смарт-карте или хранятся локально на жестком диске) доступны клиенту для дальнейшего выбора.
ОБНОВЛЕНИЕ
В вашем случае, я думаю, что то, что вы хотите, невозможно в веб-браузере через сеанс HTTPS с аутентификацией клиента, поскольку вы не можете контролировать, как он управляет хранилищем сертификатов.
Однако было бы возможно, если бы вы разработали плагин для доступа к переносному хранилищу сертификатов на USB-накопителе клиента.Я думаю, что я бы пошел с JAVA-апплетом, работающим в фоновом режиме и создавшим открытый API, к которому можно было бы получить доступ из javascript страницы, по следующим причинам:
- Доступно на нескольких платформах / браузерах
- Может работать в режиме полного доверия на веб-странице с поддержкой SSL
- Может угрожать файлам PFX как хранилищам сертификатов ( см. )
Вам потребуетсяреализуйте часть аутентификации / рукопожатия самостоятельно, скажем, с помощью апплета, подписывающего документ / фрагмент XML (может также содержать хэш имени пользователя и пароля) с использованием XMLDSIG (который может содержать открытый ключ певца и поддерживается в .net).После успешной проверки подписанного XML вы можете вернуть клиенту обычный файл cookie для аутентификации.