Condividi tramite


Mapping <uno-a-uno oneToOneMappings>

Panoramica

L'elemento <oneToOneMappings> dell'elemento esegue il <iisClientCertificateMappingAuthentication> mapping dei singoli certificati client ai singoli account utente su base uno-a-uno. Questi mapping di certificati uno-a-uno possono essere usati al posto dei metodi di autenticazione più comunemente usati, ad esempio autenticazione di Windows o autenticazione di base.

Nota

I mapping di certificati uno-a-uno differiscono dai mapping di certificati molti-a-uno , che possono eseguire il mapping di più certificati a un singolo account utente.

Compatibilità

Versione Note
IIS 10.0 L'elemento <oneToOneMappings> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <oneToOneMappings> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <oneToOneMappings> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <oneToOneMappings> non è stato modificato in IIS 7.5.
IIS 7.0 L'elemento <oneToOneMappings> dell'elemento <iisClientCertificateMappingAuthentication> è stato introdotto in IIS 7.0.
IIS 6.0 L'elemento <oneToOneMappings> sostituisce l'oggetto metabase IIS 6.0 IIsCertMapper .

Installazione

L'elemento <iisClientCertificateMappingAuthentication> non è disponibile nell'installazione predefinita di IIS 7 e versioni successive. Per installarlo, seguire questa procedura.

Windows Server 2012 o Windows Server 2012 R2

  1. Sulla barra delle applicazioni fare clic su Server Manager.
  2. In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
  3. Nella procedura guidata Aggiungi ruoli e funzionalità fare clic su Avanti. Selezionare il tipo di installazione e fare clic su Avanti. Selezionare il server di destinazione e fare clic su Avanti.
  4. Nella pagina Ruoli server espandere Server Web (IIS), server Web, sicurezzae quindi selezionare Autenticazione mapping certificati client IIS. Fare clic su Avanti.
    Screenshot che mostra l'autenticazione di mapping dei certificati client di I S selezionata per Windows Server 2012. .
  5. Nella pagina Selezione funzionalità fare clic su Avanti.
  6. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  7. Nella pagina Risultati fare clic su Chiudi.

Windows 8 o Windows 8.1

  1. Nella schermata Start spostare il puntatore fino all'angolo inferiore sinistro, fare clic con il pulsante destro del mouse sul pulsante Start e quindi scegliere Pannello di controllo.
  2. In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
  3. Espandere Internet Information Services, servizi Web a livello mondiale, sicurezza, quindi selezionare Autenticazione mapping certificati client IIS.
    Screenshot che mostra l'autenticazione di mapping dei certificati client I S selezionata per Windows 8.
  4. Fare clic su OK.
  5. Fare clic su Close.

Windows Server 2008 o Windows Server 2008 R2

  1. Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione, quindi fare clic su Server Manager.
  2. Nel riquadro della gerarchia Server Manager espandere Ruoli, quindi fare clic su Server Web (IIS).
  3. Nel riquadro Server Web (IIS) scorrere fino alla sezione Servizi ruolo e quindi fare clic su Aggiungi servizi ruolo.
  4. Nella pagina Selezione servizi ruolo della Procedura guidata Aggiungi servizi ruolo selezionare Autenticazione mapping certificati client IIS e quindi fare clic su Avanti.
    Screenshot che mostra l'opzione Autenticazione mapping certificati client I S selezionata per Windows Server 2008.
  5. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  6. Nella pagina Risultati fare clic su Chiudi.

Windows Vista o Windows 7

  1. Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
  2. In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
  3. Espandere Internet Information Services, quindi selezionare Autenticazione mapping certificati client IIS, quindi fare clic su OK.
    Screenshot che mostra l'autenticazione di mapping dei certificati client I S selezionata per Windows Vista o Windows 7.

Procedure

Non è disponibile alcuna interfaccia utente per la configurazione dell'autenticazione del mapping dei certificati client IIS per IIS 7. Per esempi di come configurare l'autenticazione di mapping dei certificati client IIS a livello di codice, vedere la sezione Esempi di codice di questo documento.

Configurazione

Attributi

Nessuno.

Elementi figlio

Elemento Descrizione
add Elemento facoltativo.

Aggiunge un mapping uno a uno alla raccolta di mapping uno a uno.
clear Elemento facoltativo.

Rimuove tutti i riferimenti ai mapping uno-a-uno dalla raccolta di mapping uno a uno.

Esempio di configurazione

Nell'esempio di configurazione seguente viene abilitata l'autenticazione del mapping dei certificati client IIS usando il mapping di certificati uno-a-uno per il sito Web predefinito, viene creato un mapping di certificati uno-a-uno per un account utente e viene configurato il sito per richiedere SSL e negoziare i certificati client.

<location path="Default Web Site">
   <system.webServer>
      <security>
         <access sslFlags="Ssl, SslNegotiateCert" />
         <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
            <digestAuthentication enabled="false" />
            <basicAuthentication enabled="false" />
            <iisClientCertificateMappingAuthentication enabled="true"
                  oneToOneCertificateMappingsEnabled="true">
               <oneToOneMappings>
                  <add enabled="true"
                     userName="administrator"
                     password="[enc:57686f6120447564652c2049495320526f636b73:enc]"
                     certificate="Base64-Encoded-Certificate-Data" />
               </oneToOneMappings>
            </iisClientCertificateMappingAuthentication>
         </authentication>
      </security>
   </system.webServer>
</location>

Come recuperare la stringa con codifica Base 64 da un certificato client

Nota

Per recuperare i dati di un certificato con codifica Base 64 per tutti gli esempi in questo argomento, è possibile esportare un certificato seguendo questa procedura:

  1. Fare clic su Start, quindi su Esegui.

  2. Immettere MMC e quindi fare clic su OK.

  3. Quando si apre Microsoft Management Console, fare clic su File, quindi su Aggiungi/Rimuovi snap-in.

  4. Nella finestra di dialogo Aggiungi o Rimuovi snap-in :

    • Evidenziare Certificati nell'elenco degli snap-in disponibili, quindi fare clic su Aggiungi.
    • Scegliere di gestire i certificati per Account utente personale, quindi fare clic su Fine.
    • Fare clic su OK per chiudere la finestra di dialogo.
  5. In the Microsoft Management Console:

    • Espandere Certificati - Utente corrente, quindi Personale, quindi Certificati.
    • Nell'elenco dei certificati fare clic con il pulsante destro del mouse sul certificato da esportare, quindi scegliere Tutte le attività, quindi fare clic su Esporta.
  6. Quando si apre l'Esportazione guidata certificati :

    • Fare clic su Avanti.
    • Scegliere No, non esportare la chiave privata, quindi fare clic su Avanti.
    • Scegliere Base-64 con codifica X.509 9 (. CER) per il formato di esportazione, quindi fare clic su Avanti.
    • Scegliere di salvare il certificato sul desktop come MyCertificate.cer, quindi fare clic su Avanti.
    • Fare clic su Fine; verrà visualizzata una finestra di dialogo che indica che l'esportazione è riuscita.
  7. Chiudere Microsoft Management Console.

  8. Aprire il file MyCertificate.cer esportato usando Il Blocco note di Windows:

    • Rimuovere "-----BEGIN CERTIFICATE-----" dall'inizio del testo.
    • Rimuovere "-----END CERTIFICATE-----" dalla fine del testo.
    • Concatenare tutte le righe in una singola riga di testo: si tratta dei dati del certificato con codifica Base 64 che verranno usati per tutti gli esempi in questo argomento.

Codice di esempio

Gli esempi di codice seguenti consentono l'autenticazione del mapping dei certificati client IIS usando il mapping di certificati uno a uno per il sito Web predefinito, creare un unico mapping di certificati uno-a-uno per un account utente e configurare il sito per richiedere SSL e negoziare i certificati client.

Nota

Per recuperare i dati del certificato codificati base-64 per gli esempi di codice elencati di seguito, è possibile esportare un certificato usando i passaggi elencati nella sezione Dettagli configurazione di questo documento.

AppCmd.exe

Nota

A causa di caratteri nelle stringhe di certificato che non possono essere analizzate da AppCmd.exe, non è consigliabile usare AppCmd.exe per configurare i mapping di certificati uno-a-uno IIS.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection iisClientCertificateMappingAuthenticationSection = config.GetSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "Default Web Site");
         iisClientCertificateMappingAuthenticationSection["enabled"] = true;
         iisClientCertificateMappingAuthenticationSection["oneToOneCertificateMappingsEnabled"] = true;

         ConfigurationElementCollection oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.GetCollection("oneToOneMappings");
         ConfigurationElement addElement = oneToOneMappingsCollection.CreateElement("add");
         addElement["enabled"] = true;
         addElement["userName"] = @"Username";
         addElement["password"] = @"Password";
         addElement["certificate"] = @"Base-64-Encoded-Certificate-Data";
         oneToOneMappingsCollection.Add(addElement);

         ConfigurationSection accessSection = config.GetSection("system.webServer/security/access", "Default Web Site");
         accessSection["sslFlags"] = @"Ssl, SslNegotiateCert";

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim iisClientCertificateMappingAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "Default Web Site")
      iisClientCertificateMappingAuthenticationSection("enabled") = True
      iisClientCertificateMappingAuthenticationSection("oneToOneCertificateMappingsEnabled") = True

      Dim oneToOneMappingsCollection As ConfigurationElementCollection = iisClientCertificateMappingAuthenticationSection.GetCollection("oneToOneMappings")
      Dim addElement As ConfigurationElement = oneToOneMappingsCollection.CreateElement("add")
      addElement("enabled") = True
      addElement("userName") = "Username"
      addElement("password") = "Password"
      addElement("certificate") = "Base-64-Encoded-Certificate-Data"
      oneToOneMappingsCollection.Add(addElement)

      Dim accessSection As ConfigurationSection = config.GetSection("system.webServer/security/access", "Default Web Site")
      accessSection("sslFlags") = "Ssl, SslNegotiateCert"

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var iisClientCertificateMappingAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site");
iisClientCertificateMappingAuthenticationSection.Properties.Item("enabled").Value = true;
iisClientCertificateMappingAuthenticationSection.Properties.Item("oneToOneCertificateMappingsEnabled").Value = true;

var oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.ChildElements.Item("oneToOneMappings").Collection;
var addElement = oneToOneMappingsCollection.CreateNewElement("add");
addElement.Properties.Item("enabled").Value = true;
addElement.Properties.Item("userName").Value = "Username";
addElement.Properties.Item("password").Value = "Password";
addElement.Properties.Item("certificate").Value = "Base-64-Encoded-Certificate-Data";
oneToOneMappingsCollection.AddElement(addElement);

var accessSection = adminManager.GetAdminSection("system.webServer/security/access", "MACHINE/WEBROOT/APPHOST/Default Web Site");
accessSection.Properties.Item("sslFlags").Value = "Ssl, SslNegotiateCert";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set iisClientCertificateMappingAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site")
iisClientCertificateMappingAuthenticationSection.Properties.Item("enabled").Value = True
iisClientCertificateMappingAuthenticationSection.Properties.Item("oneToOneCertificateMappingsEnabled").Value = True

Set oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.ChildElements.Item("oneToOneMappings").Collection
Set addElement = oneToOneMappingsCollection.CreateNewElement("add")
addElement.Properties.Item("enabled").Value = True
addElement.Properties.Item("userName").Value = "Username"
addElement.Properties.Item("password").Value = "Password"
addElement.Properties.Item("certificate").Value = "Base-64-Encoded-Certificate-Data"
oneToOneMappingsCollection.AddElement(addElement)

Set accessSection = adminManager.GetAdminSection("system.webServer/security/access", "MACHINE/WEBROOT/APPHOST/Default Web Site")
accessSection.Properties.Item("sslFlags").Value = "Ssl, SslNegotiateCert"

adminManager.CommitChanges()