Безопасный ASP.NET Приложение MVC с аутентификацией по протоколу SSL и клиентскому сертификату

#asp.net-mvc #ssl

#asp.net-mvc #ssl

Вопрос:

Я ищу, чтобы обеспечить ASP.NET Приложение MVC с аутентификацией по протоколу SSL и клиентскому сертификату. Я использую IIS 7.5, Windows Server 2008 R2.

Я хотел бы знать, возможно ли выполнить следующее через Web.config (это должно быть там!)

  1. Требуется связь по протоколу SSL для всех запросов
  2. Сопоставьте несколько клиентских сертификатов одному пользователю
  3. Требуется, чтобы пользователь прошел проверку подлинности

Кроме того, любые указания о том, как это сделать, любые учебные пособия или другие соответствующие ресурсы будут высоко оценены, поскольку я новичок практически во всех этих вещах.

Комментарии:

1. IIS 6.1 и Windows Server 2008 R2? Как происходит?

2. Извините! Это было очень глупо с моей стороны! Я имел в виду 7.5! Будет обновляться

Ответ №1:

Итак, чтобы ответить на мои собственные вопросы.. все вышеперечисленное может быть достигнуто с помощью Web.config. Следующий раздел Web.config требует SSL через раздел system / access и настраивает сопоставление сертификатов многих клиентов к одному. Эти разделы заблокированы в файле applicationHost.config, поэтому любому, кто хочет отредактировать их в Web.config, потребуется их разблокировать. Есть много руководств по этому вопросу, поэтому я не буду вдаваться в подробности.

         <security>
            <access sslFlags="Ssl, SslNegotiateCert" />
            <authentication>
                <anonymousAuthentication enabled="false" />
                <iisClientCertificateMappingAuthentication enabled="true" manyToOneCertificateMappingsEnabled="true">
                    <manyToOneMappings>
                        <add name="Authentication Certificate"
                             enabled="true"
                             permissionMode="Allow"
                             userName="foo"
                             password="bar">
                            <rules>
                                <add certificateField="Issuer" certificateSubField="CN" matchCriteria="*.stackoverflow.com" compareCaseSensitive="false" />
                            </rules>
                        </add>
                    </manyToOneMappings>
                </iisClientCertificateMappingAuthentication>
            </authentication>
        </security>
  

Ответ №2:

Идем по порядку:

  1. Требовать SSL-связи для всех запросов — Да. В IIS установите для сайта только https привязку и удалите http привязку. Сайт не будет отвечать на http-запросы. Если вы сделаете это, вам следует создать скрипт для перенаправления ошибок 403.4 с http://mysite.com на https://mysite.com . Вы можете найти много примеров того, как это сделать, используя различные инструменты.

  2. Сопоставьте несколько клиентских сертификатов одному пользователю — я не знаю. Я передам это.

  3. Требовать аутентификации пользователя — Да. В файле web.config в <system.web> элементе добавьте следующее:

      <authorization>
         <deny users="?"/>
     </authorization>
      

Комментарии:

1. Спасибо — это было полезно. Просто в итоге я сделал это по-другому.

2.2) iis.net/ConfigReference/system.webServer/security/…