2011-10-19 17 views
7

Estoy buscando proteger una aplicación ASP.NET MVC con SSL y autenticación de certificado de cliente. Estoy usando IIS 7.5, Windows Server 2008 R2.Secure ASP.NET MVC application with SSL and client certificate authentication

me gustaría saber si es posible hacer lo siguiente a través Web.config (tiene que ser a través de allí!)

  1. requieren una comunicación SSL para todas las solicitudes
  2. asignar certificados de cliente a múltiples un solo usuario
  3. requieren que el usuario se autentique

Además, cualquier consejos sobre cómo seguir haciendo esto, tutoriales u otros recursos pertinentes serán mucho apr eciated ya que soy nuevo en casi todas estas cosas.

+0

IIS 6.1 y Windows Server 2008 R2? ¿Cómo viene? –

+0

¡Lo siento! ¡Eso fue muy tonto de mi parte! ¡Quise decir 7.5! Actualizará –

Respuesta

7

Por lo tanto, para responder a mis propias preguntas .. todo lo anterior se puede lograr a través de la Web.config. La siguiente sección de Web.config requiere SSL a través de la sección de sistema/acceso, y configura el mapeo de certificados de cliente de muchos a uno. Estas secciones están bloqueadas en applicationHost.config, por lo que cualquier persona que desee editarlas en Web.config deberá desbloquearlas. Hay muchos tutoriales sobre eso, así que no entraré en ello.

 <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

ir en orden:

  1. requieren una comunicación SSL para todas las solicitudes - Sí. En IIS, configure el sitio con solo un enlace https y elimine el enlace http. El sitio no responderá a las solicitudes http. Si hace esto, debe crear una secuencia de comandos para redirigir los errores 403.4 de http://mysite.com a https://mysite.com. Puede encontrar muchos ejemplos de cómo hacer esto usando varias herramientas.

  2. Asignar múltiples certificados de cliente a un solo usuario - No lo sé. Voy a transmitir este.

  3. Requerir que el usuario esté autenticado - Sí. En el archivo web.config, en el elemento <system.web>, añada lo siguiente:

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

Gracias - esto fue útil. Acabo de hacerlo de otra manera. –

+0

2) http://www.iis.net/ConfigReference/system.webServer/security/authentication/iisClientCertificateMappingAuthentication – quetzalcoatl

Cuestiones relacionadas