2011-10-19 16 views
7

Sto cercando di proteggere un'applicazione ASP.NET MVC con SSL e l'autenticazione del certificato client. Sto usando IIS 7.5, Windows Server 2008 R2.Applicazione ASP.NET MVC sicura con SSL e autenticazione del certificato client

Mi piacerebbe sapere se è possibile effettuare le seguenti operazioni tramite web.config (deve essere di lì!)

  1. esigere la comunicazione SSL per tutte le richieste
  2. Mappa certificati multipli client al un singolo utente
  3. richiedono all'utente di essere autenticato

Inoltre, tutte le indicazioni su come andare avanti a fare questo, qualsiasi tutorial o altre risorse rilevanti sarà molto appr eciated come sono nuovo a praticamente tutte queste cose.

+0

IIS 6.1 e Windows Server 2008 R2? Come mai? –

+0

Siamo spiacenti! E 'stato molto sciocco da parte mia! Intendevo 7,5! Aggiornerà –

risposta

7

Quindi, per rispondere alla mia domanda .. tutto quanto sopra può essere raggiunto attraverso il web.config. La seguente sezione di Web.config richiede SSL attraverso la sezione di sistema/accesso e configura il mapping di certificati client molti-a-uno. Queste sezioni sono bloccate nell'applicazione Host.config, quindi chiunque desideri modificarle in Web.config dovrà sbloccarle. Ci sono molti tutorial su questo, quindi non ci andrò.

 <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

Andando con ordine:

  1. esigere la comunicazione SSL per tutte le richieste - Sì. In IIS, impostare il sito con solo un binding https ed eliminare l'associazione http. Il sito non risponderà alle richieste http. Se si esegue questa operazione, è necessario creare uno script per reindirizzare gli errori 403.4 da http://mysite.com a https://mysite.com. Puoi trovare molti esempi su come farlo usando vari strumenti.

  2. Associare più certificati client a un singolo utente - Non lo so. Passerò questo.

  3. Richiedere all'utente di essere autenticato - Sì. Nel file web.config, nell'elemento <system.web>, aggiungere il seguente:

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

Grazie - questo è stato utile. Ho finito per farlo in un modo diverso. –

+0

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

Problemi correlati