Реализация сертификата авторизации в asp.net - PullRequest
4 голосов
/ 13 апреля 2011

Прежде всего, извините за мой плохой английский.

В последние два дня я много читал, но не нашел решения своей проблемы.

Мне нужно реализовать такую ​​авторизацию: Пользователь открывает веб-страницу, появляется специальная форма. В этой форме всего одна кнопка «Выбрать файл сертификата». Когда пользователь нажимает на него - он должен выбрать файл сертификата, который будет использоваться для авторизации. Этот файл должен быть хранится на флешке и т. д. Не на жестком диске компьютера.

Я читал о файлах cer / pfx, но ничего о такой модели.

Может быть, это невозможно сделать с помощью этих классов в .net

System.Security.Cryptography.X509Certificates.X509Certificate
System.Security.Cryptography.X509Certificates.X509Certificate2

При этом на этом сайте будет осуществляться авторизация форм, чтобы пользователь мог выбрать способ авторизации.

Обновление: Я думаю, что эти классы не могут быть использованы для этой модели. Можете ли вы посоветовать мне что-нибудь еще?

1 Ответ

1 голос
/ 13 апреля 2011

Прежде всего вам потребуется веб-страница с поддержкой SSL.Вы не можете разработать его с помощью входящего в комплект веб-сервера разработки (cassini).Можно разработать такую ​​модель аутентификации, используя IIS Express или локальный экземпляр IIS.Проверка подлинности SSL не может напрямую контролироваться вашим кодом и зависит от настроек папки веб-страницы IIS.Взгляните на эту статью .

Что касается работы с графическим интерфейсом, сертификаты обычно хранятся в хранилищах сертификатов, которые безопасны и не могут контролироваться из клиентских страниц / скриптов.Когда веб-браузер получает ответ с запросом согласования сертификата клиента, отображается диалоговое окно, специфичное для браузера / платформы, показывающее все совместимые клиентские сертификаты.На стороне сервера вы можете контролировать, какие сертификаты жизнеспособны для клиента, устанавливая соответствующие корневые сертификаты из доверенных центров сертификации.Однако вы не можете контролировать, какие сертификаты (если они хранятся на поддерживаемой смарт-карте или хранятся локально на жестком диске) доступны клиенту для дальнейшего выбора.

ОБНОВЛЕНИЕ

В вашем случае, я думаю, что то, что вы хотите, невозможно в веб-браузере через сеанс HTTPS с аутентификацией клиента, поскольку вы не можете контролировать, как он управляет хранилищем сертификатов.

Однако было бы возможно, если бы вы разработали плагин для доступа к переносному хранилищу сертификатов на USB-накопителе клиента.Я думаю, что я бы пошел с JAVA-апплетом, работающим в фоновом режиме и создавшим открытый API, к которому можно было бы получить доступ из javascript страницы, по следующим причинам:

  • Доступно на нескольких платформах / браузерах
  • Может работать в режиме полного доверия на веб-странице с поддержкой SSL
  • Может угрожать файлам PFX как хранилищам сертификатов ( см. )

Вам потребуетсяреализуйте часть аутентификации / рукопожатия самостоятельно, скажем, с помощью апплета, подписывающего документ / фрагмент XML (может также содержать хэш имени пользователя и пароля) с использованием XMLDSIG (который может содержать открытый ключ певца и поддерживается в .net).После успешной проверки подписанного XML вы можете вернуть клиенту обычный файл cookie для аутентификации.

...