HTTPContext не находит клиентский сертификат CAC в ASP.NET и iis express

У меня есть приложение ASP.NET, которое должно читать сертификат на клиентском CAC.

моя среда: Visual Studio 2012 IIS Express

В IIS Express я запускаю два отдельных сайта для клиента и сервера. Аутентификация происходит на сервере.

Мои серверные и клиентские проекты имеют следующие свойства в VS:

  • Анонимная аутентификация = включена
  • SSL включен = Истина
  • Аутентификация Windows = отключена
  • Режим управляемого конвейера = интегрированный

В файлах Web.config обоих сайтов на другой сайт ссылаются через https://localhost:<port>

В коде сервера есть строчка: string mycert = HttpContext.Request.ClientCertificate.Subject;
То есть запросить сертификат клиента с карты CAC. Здесь у меня возникли проблемы, поскольку для всех полей, которые, по моему мнению, относятся к сертификату клиента, нет значения (пустого или нулевого).

Q_1: Как прочитать сертификат CAC клиента, чтобы пройти аутентификацию на сервере?
В_2: Нужно ли что-то изменить в файле web.config?
Q_2B: Я видел кое-что об oneToOneMapping, может ли это быть проблемой?
Q_3: Далек ли я от этого? если да то посоветуйте.

Спасибо!


person fifamaniac04    schedule 25.11.2014    source источник


Ответы (1)


Я не знаю, помогает это или нет, но в интегрированном режиме IIS HttpContext не заполняется до тех пор, пока не завершится событие HttpApplication.Start. Если у вас есть код, вызывающий нарушения, слишком рано в жизненном цикле приложения, эти значения не будут существовать.

Это имеет смысл, если подумать, потому что вы не хотели бы, чтобы все приложение было инициализировано в контексте определенного пользователя. Итак, чтобы получить доступ к вашему сертификату, вам нужно сделать это с определенной страницы или HttpHandler.

person NightOwl888    schedule 25.11.2014