Mappages un-à-un <oneToOneMappings>
Vue d’ensemble
L’élément <oneToOneMappings>
de l’élément <iisClientCertificateMappingAuthentication>
mappe des certificats clients individuels à des comptes d’utilisateur individuels. Ces mappages de certificats un-à-un peuvent être utilisés à la place des méthodes d’authentification plus couramment utilisées, telles que l’authentification Windows ou l’authentification de base.
Remarque
Les mappages de certificats un-à-un diffèrent des mappages de certificats plusieurs-à-un, qui peuvent mapper plusieurs certificats à un seul compte d’utilisateur.
Compatibilité
Version | Notes |
---|---|
IIS 10.0 | L’élément <oneToOneMappings> n’a pas été modifié dans IIS 10.0. |
IIS 8.5 | L’élément <oneToOneMappings> n’a pas été modifié dans IIS 8.5. |
IIS 8.0 | L’élément <oneToOneMappings> n’a pas été modifié dans IIS 8.0. |
IIS 7.5 | L’élément <oneToOneMappings> n’a pas été modifié dans IIS 7.5. |
IIS 7.0 | L’élément <oneToOneMappings> de l’élément <iisClientCertificateMappingAuthentication> a été introduit dans IIS 7.0. |
IIS 6.0 | L’élément <oneToOneMappings> remplace l’objet métabase IIsCertMapper IIS 6.0. |
Programme d’installation
L’élément <iisClientCertificateMappingAuthentication>
n’est pas disponible dans l’installation par défaut d’IIS 7 et versions ultérieures. Pour l’installer, procédez comme suit.
Windows Server 2012 ou Windows Server 2012 R2
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
- Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
- Dans l’Assistant Ajout de rôles et de fonctionnalités, cliquez sur Suivant. Sélectionnez le type d’installation, puis cliquez sur Suivant. Sélectionnez le serveur de destination, puis cliquez sur Suivant.
- Dans la page Rôles serveur, développez Serveur web (IIS), Serveur web, Sécurité, puis sélectionnez Authentification par mappage de certificat client IIS. Sélectionnez Suivant.
. - Dans la page Sélectionner les composants, cliquez sur Suivant.
- Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
Windows 8 ou Windows 8.1
- Dans l’écran d’accueil, déplacez le pointeur jusqu’au coin inférieur gauche, cliquez avec le bouton droit sur le bouton Démarrer, puis cliquez sur Panneau de configuration.
- Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
- Développez Internet Information Services, Services World Wide Web, Sécurité, puis sélectionnez Authentification par mappage de certificat client IIS.
- Cliquez sur OK.
- Cliquez sur Fermer.
Windows Server 2008 ou Windows Server 2008 R2
- Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire de serveur.
- Dans le volet de hiérarchie Gestionnaire de serveur, développez Rôles, puis cliquez sur Serveur web (IIS).
- Dans le volet Serveur web (IIS), faites défiler jusqu’à la section Services de rôle, puis cliquez sur Ajouter des services de rôle.
- Dans la page Sélectionner des services de rôle de l’Assistant Ajout de services de rôle, sélectionnez Authentification par mappage de certificat client IIS, puis cliquez sur Suivant.
- Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
Windows Vista ou Windows 7
- Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
- Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
- Développez Internet Information Services, puis sélectionnez Authentification par mappage de certificat client IIS, puis cliquez sur OK.
Procédure
Il n’existe aucune interface utilisateur pour configurer l’authentification par mappage de certificat client IIS pour IIS 7. Pour obtenir des exemples de configuration de l’authentification par mappage de certificat client IIS par programmation, consultez la section Exemples de code de ce document.
Configuration
Attributs
Aucune.
Éléments enfants
Élément | Description |
---|---|
add |
Élément facultatif. Ajoute un mappage un-à-un à la collection de mappages un-à-un. |
clear |
Élément facultatif. Supprime toutes les références aux mappages un-à-un de la collection oneToOneMappings. |
Exemple Configuration
L’exemple de configuration suivant active l’authentification par mappage de certificat client IIS à l’aide d’un mappage de certificat un-à-un pour le site web par défaut, crée un mappage de certificat un-à-un pour un compte d’utilisateur et configure le site pour exiger SSL et négocier des certificats clients.
<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>
Comment récupérer une chaîne encodée en base 64 à partir d’un certificat client
Remarque
Pour récupérer des données de certificat encodées en base 64 pour tous les exemples de cette rubrique, vous pouvez exporter un certificat en procédant comme suit :
Cliquez sur Démarrer, puis sur Exécuter.
Entrez MMC, puis cliquez sur OK.
Quand Microsoft Management Console s’ouvre, cliquez sur Fichier, puis sur Ajouter ou supprimer des composants logiciels enfichables.
Dans la boîte de dialogue Ajouter ou supprimer des composants logiciels enfichables :
- Mettez en surbrillance Certificats dans la liste des composants logiciels enfichables disponibles, puis cliquez sur Ajouter.
- Choisissez de gérer les certificats pour Mon compte d’utilisateur, puis cliquez sur Terminer.
- Cliquez sur OK pour fermer la boîte de dialogue.
Dans Microsoft Management Console :
- Développez Certificats - Utilisateur actuel, puis Personnel, puis Certificats.
- Dans la liste des certificats, cliquez avec le bouton droit sur le certificat que vous souhaitez exporter, puis cliquez sur Toutes les tâches et sur Exporter.
Quand l’Assistant Exportation de certificat s’ouvre :
- Sélectionnez Suivant.
- Choisissez Non, ne pas exporter la clé privée, puis cliquez sur Suivant.
- Choisissez X.509 9 encodé en base 64 (. CER) pour le format d’exportation, puis cliquez sur Suivant.
- Choisissez d’enregistrer le certificat sur votre bureau en tant que MyCertificate.cer, puis cliquez sur Suivant.
- Cliquez sur Terminer ; vous devez voir une boîte de dialogue indiquant que l’exportation a réussi.
Fermez Microsoft Management Console.
Ouvrez le fichier MyCertificate.cer que vous avez exporté à l’aide du Bloc-notes Windows :
- Supprimez « -----BEGIN CERTIFICATE----- » au début du texte.
- Supprimez « -----END CERTIFICATE----- » à la fin du texte.
- Concaténez toutes les lignes en une seule ligne de texte : il s’agit des données de certificat encodées en base 64 que vous utiliserez pour tous les exemples de cette rubrique.
Exemple de code
Les exemples de code suivants activent l’authentification par mappage de certificat client IIS à l’aide d’un mappage de certificat un-à-un pour le site web par défaut, créent un mappage de certificat un-à-un pour un compte d’utilisateur et configurent le site pour exiger SSL et négocier des certificats clients.
Remarque
Pour récupérer les données de certificat encodées en base 64 pour les exemples de code répertoriés ci-dessous, vous pouvez exporter un certificat en suivant les étapes listées dans la section Détails de la configuration de ce document.
AppCmd.exe
Remarque
En raison de caractères dans des chaînes de certificat qui ne peuvent pas être analysés par AppCmd.exe, vous ne devez pas utiliser AppCmd.exe pour configurer des mappages de certificats un-à-un 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()