Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tópico descreve como configurar um serviço WCF hospedado no IIS para usar a segurança de transporte HTTP. A segurança de transporte HTTP requer um certificado SSL para ser registrado no IIS. Se você não tiver um certificado SSL, poderá usar o IIS para gerar um certificado de teste. Em seguida, você deve adicionar uma associação SSL ao site e configurar as propriedades de autenticação do site. Finalmente, você precisa configurar o serviço WCF para usar HTTPS.
Criando um certificado autoassinado
Abra o Gerenciador dos Serviços de Informações da Internet (inetmgr.exe) e selecione o nome do computador na exibição de árvore à esquerda. No lado direito da tela, selecione Certificados do servidor
Na janela Certificados do servidor, clique no link Criar certificado autoassinado....
Insira um nome amigável para o certificado autoassinado e clique em OK.
Os detalhes do certificado autoassinado recém-criado agora são mostrados na janela Certificados do servidor.
O certificado gerado é instalado no armazenamento de Autoridades de Certificação Raiz Confiáveis.
Adicionar vinculação SSL
Ainda no Gerenciador dos Serviços de Informações da Internet, expanda a pasta Sites e, em seguida, a pasta Site Padrão no modo de exibição em árvore no lado esquerdo da tela.
Clique no botão Ligações.... Link na seção Ações na parte superior direita da janela.
Na janela Ligações de Site, clique no botão Adicionar .
Na caixa de diálogo Adicionar Vinculação de Site, selecione https para o tipo e o nome amigável do certificado autoassinado que você acabou de criar.
Configurar o diretório virtual para SSL
Ainda no Gerenciador dos Serviços de Informações da Internet, selecione o diretório virtual que contém o serviço seguro do WCF.
No painel central da janela, selecione Configurações de SSL na seção IIS.
No painel Configurações de SSL, marque a caixa de seleção Exigir SSL e clique no link Aplicar na seção Ações no lado direito da tela.
Configurar o Serviço WCF para Segurança de Transporte HTTP
No web.config do serviço WCF, configure a ligação HTTP para usar a segurança de transporte, conforme mostrado no XML a seguir.
<bindings> <basicHttpBinding> <binding name="secureHttpBinding"> <security mode="Transport"> <transport clientCredentialType="None"/> </security> </binding> </basicHttpBinding> </bindings>
Especifique seu serviço e ponto de extremidade de serviço conforme mostrado no XML a seguir.
<services> <service name="MySecureWCFService.Service1"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" contract="MySecureWCFService.IService1"/> <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> </service> </services>
Exemplo
A seguir está um exemplo completo de um arquivo web.config para um serviço WCF usando segurança de transporte HTTP
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="MySecureWCFService.Service1">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="secureHttpBinding"
contract="MySecureWCFService.IService1"/>
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>