Share via


Mapeamentos um para um <oneToOneMappings>

Visão geral

O elemento <oneToOneMappings> do elemento <iisClientCertificateMappingAuthentication> mapeia certificados de cliente individuais para contas de usuário individuais em uma base um para um. Esses mapeamentos de certificado um para um podem ser usados no lugar dos métodos de autenticação mais usados, como autenticação do Windows ou autenticação Básica.

Observação

Os mapeamentos de certificado um para um diferem dos mapeamentos de certificado muitos para um, que podem mapear vários certificados para uma única conta de usuário.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <oneToOneMappings> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <oneToOneMappings> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <oneToOneMappings> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <oneToOneMappings> não foi modificado no IIS 7.5.
IIS 7.0 O elemento <oneToOneMappings> do elemento <iisClientCertificateMappingAuthentication> foi introduzido no IIS 7.0.
IIS 6,0 O elemento <oneToOneMappings> substitui o objeto de metabase IIsCertMapper do IIS 6.0.

Instalação

O elemento <iisClientCertificateMappingAuthentication> não está disponível na instalação padrão do IIS 7 e posterior. Para instalar, use as etapas a seguir.

Windows Server 2012 R2 ou Windows Server 2012

  1. Na barra de tarefas, clique em Gerenciador do Servidor.
  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
  3. No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
  4. Na página Funções de Servidor, expanda Servidor Web (IIS), Servidor Web, expanda Segurança e selecione Autenticação de Mapeamento de Certificado de Cliente IIS. Clique em Avançar.
    Screenshot that shows I I S Client Certificate Mapping Authentication selected for Windows Server 2012. .
  5. Na página Selecionar recursos, clique em Avançar.
  6. Na página Confirmar seleções de instalação, clique em Instalar.
  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  1. Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
  3. Expanda Serviços de Informações da Internet, expanda Serviços da World Wide Web, expanda Segurança e, em seguida, selecione Autenticação de Mapeamento de Certificado do Cliente IIS.
    Screenshot that shows I I S Client Certificate Mapping Authentication selected for Windows 8.
  4. Clique em OK.
  5. Clique em Fechar.

Windows Server 2008 R2 ou Windows Server 2008

  1. Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
  2. No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
  3. No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
  4. Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, selecione Autenticação do Mapeamento de Certificado do Cliente IIS e clique em Avançar.
    Screenshot that shows I I S Client Certificate Mapping Authentication selected for Windows Server 2008.
  5. Na página Confirmar Seleções de Instalação, clique em Instalar.
  6. Na página Resultados , clique em Fechar.

Windows Vista ou Windows 7

  1. Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
  3. Expanda Serviços de Informações da Internet, selecione Autenticação do Mapeamento de Certificado do Cliente IIS e clique em OK.
    Screenshot that shows I I S Client Certificate Mapping Authentication selected for Windows Vista or Windows 7.

Instruções

Não há uma interface do usuário para configurar a autenticação de Mapeamento de Certificado de Cliente do IIS para IIS 7. Para obter exemplos de como configurar a autenticação de Mapeamento de Certificado de Cliente IIS programaticamente, confira a seção Exemplos de Código deste documento.

Configuração

Atributos

Nenhum.

Elementos filho

Elemento Descrição
add Elemento opcional.

Adiciona um mapeamento um para um à coleção de mapeamentos um para um.
clear Elemento opcional.

Remove todas as referências a mapeamentos um para um da coleção de mapeamentos um para um.

Exemplo de configuração

O exemplo de configuração a seguir habilita a autenticação de Mapeamento de Certificado de Cliente IIS usando mapeamento de certificado um para um para o Site Padrão, cria um único mapeamento de certificado um para um para uma conta de usuário e configura o site para exigir SSL e negociar certificados de cliente.

<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>

Como recuperar a cadeia de caracteres codificada em Base-64 de um certificado de cliente

Observação

Para recuperar dados de certificado codificados em Base-64 para todos os exemplos neste tópico, você pode exportar um certificado usando as seguintes etapas:

  1. Clique em Iniciar e, em seguida, em Executar.

  2. Digite MMC e clique em OK.

  3. Quando o Console de Gerenciamento Microsoft for aberto, clique em Arquivoe, em seguida, Adicionar/Remover Snap-ins.

  4. N caixa de diálogo Adicionar ou Remover Snap-ins:

    • Realce Certificados na lista de snap-ins disponíveis e clique em Adicionar.
    • Escolha gerenciar certificados na Minha conta de usuário e clique em Concluir.
    • Clique em OK para fechar a caixa de diálogo.
  5. No Console de Gerenciamento Microsoft:

    • Expanda Certificados - Usuário Atual, Pessoal e Certificados.
    • Na lista de certificados, clique com o botão direito do mouse no certificado que você deseja exportar e clique em Todas as Tarefas e, em seguida, Exportar.
  6. Quando o Assistente para Exportação de Certificados abrir:

    • Clique em Avançar.
    • Escolha Não exporte a chave privadae clique em Próximo.
    • Escolha X.509 9 codificado em Base-64 (.CER) como o formato de exportação e, em seguida, clique em Avançar.
    • Escolha salvar o certificado na área de trabalho como MyCertificate.cer e clique em Avançar.
    • Clique em Concluir. Uma caixa de diálogo será exibida informando que a exportação foi bem-sucedida.
  7. Feche o Microsoft Management Console.

  8. Abra o arquivo MyCertificate.cer que você exportou usando o Bloco de notas do Windows:

    • Remova "-----BEGIN CERTIFICATE-----" do início do texto.
    • Remova "-----END CERTIFICATE-----" do final do texto.
    • Concatene todas as linhas em uma única linha de texto - esses são os dados de certificado codificados em Base-64 que você usará para todos os exemplos neste tópico.

Exemplo de código

Os exemplos de código a seguir habilitam a autenticação de Mapeamento de Certificado de Cliente IIS usando mapeamento de certificado um para um para o Site Padrão, criam um único mapeamento de certificado um para um para uma conta de usuário e configuram o site para exigir SSL e negociar certificados de cliente.

Observação

Para recuperar os dados de certificado codificados em Base-64 para os exemplos de código listados abaixo, você pode exportar um certificado usando as etapas listadas na seção Detalhes de Configuração deste documento.

AppCmd.exe

Observação

Devido aos caracteres em cadeias de caracteres de certificado que não podem ser analisados por AppCmd.exe, você não deve usar AppCmd.exe para configurar mapeamentos de certificado um para um do 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()