Как получить Request.ServerVariables ("CERT_SUBJECT") из CA C при отладке в Visual Studio 2015 с IIS Express - PullRequest
0 голосов
/ 04 августа 2020

У меня есть веб-страница ASP. NET, которая считывает карту CA C пользователя. При публикации на тестовом сервере работает нормально; однако в моей локальной среде разработки с IIS Express я получаю пустые строки при использовании Request.ServerVariables ("CERT_SUBJECT"). Я могу получить переменную «LOGON_USER», но все «CERT_ *» - это пустые строки.

В настоящее время в настройках моего проекта содержится

Anonymous Authentication = false
Windows Authentication = true
SSL Enabled = true   // Created the default IIS express cert.  Have also tried false with no luck

Кроме того, я также попытался измените applicationhost.config вот так

<security>

    <access sslFlags="SslRequireCert"> <!-- originally none -->

</security>

<authentication>

    <anonymousAuthentication enabled="false" userName="" /> <!--originally true-->

    <basicAuthentication enabled="false" />

    <clientCertificateMappingAuthentication enabled="false" />

    <digestAuthentication enabled="false" />

    <iisClientCertificateMappingAuthentication enabled="true"> <!--originally false-->
    </iisClientCertificateMappingAuthentication>

    <windowsAuthentication enabled="true"> <!--originally false-->
        <providers>
            <add value="Negotiate" />
            <add value="NTLM" />
        </providers>
    </windowsAuthentication>

</authentication>

Есть какие-нибудь мысли о дальнейших настройках, которые мне нужно сделать, чтобы моя среда разработки могла видеть эти переменные во время отладки? Спасибо.

1 Ответ

0 голосов
/ 05 августа 2020

Следующие настройки оказались верными. Свойства проекта должны быть установлены на

Anonymous Authentication = false
Windows Authentication = true
SSL Enabled = true

и applicationhost.config, например,

<access sslFlags="Ssl,SslNegotiateCert,SslRequireCert"> <!-- originally none -->
<anonymousAuthentication enabled="false" userName="" /> <!--originally true-->

<basicAuthentication enabled="false" />

<clientCertificateMappingAuthentication enabled="false" />

<digestAuthentication enabled="false" />

<iisClientCertificateMappingAuthentication enabled="true"> <!--originally false-->
</iisClientCertificateMappingAuthentication>

<windowsAuthentication enabled="true"> <!--originally false-->
    <providers>
        <add value="Negotiate" />
        <add value="NTLM" />
    </providers>
</windowsAuthentication>

Кроме того, в настройках проекта на веб-вкладке нажмите кнопку «Создать». Кнопка виртуального каталога.

Наконец, посмотрите на свойства проекта. Есть настройка под названием Ssl URL. Скопируй это. При отладке, если ваш проект не запускается в режиме SSL, он запускается с обычным http-адресом и отображает ошибку запрета доступа. Вставьте URL-адрес SSL в браузер и нажмите Enter. На странице будет предложено ввести пароль CA C, и вы сможете просмотреть переменные сервера CERT с помощью Request.ServerVariables.

...