Gostaria de saber se há possibilidade de utilizar autenticação no WCF, via WebService, sem a necessidade de certificação digital.
Exemplo: Estamos utilizado o serviço de WebService do WCF e precisamos de autenticação na chamada do serviço. Implementamos a autenticação customizada, mas só funciona com certificação digital.
Gostaria de saber se há possibilidade de realizar autenticação sem certificação digital.
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (c) Microsoft Corporation. All rights reserved.
-->
<configuration>
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<!-- configure base address for host -->
<add baseAddress ="http://localhost:8001/servicemodelsamples/service"/>
</baseAddresses>
</host>
<!-- use base address provided by host, provide one endpoint -->
<endpoint address="username"
binding="wsHttpBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</service>
</services>
<bindings>
<wsHttpBinding>
<!-- Username binding -->
<binding name="Binding1">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior" includeExceptionDetailInFaults="True">
<serviceCredentials>
<!--
The serviceCredentials behavior allows one to specify a custom validator for username/password combinations.
-->
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Microsoft.ServiceModel.Samples.CalculatorService+CustomUserNameValidator, service" />
<!--
The serviceCredentials behavior allows one to define a service certificate.
A service certificate is used by a client to authenticate the service and provide message protection.
This configuration references the "localhost" certificate installed during the setup instructions.
-->
<serviceCertificate findValue="localhost" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Este é um exemplo que pegamos da Microsoft para testar.
Como pode ser visto no App.config nós utilizamos a classe
Microsoft.ServiceModel.Samples.CalculatorService+CustomUserNameValidator
para autenticar a requisição.
Tivemos que utilizar um certificado digital de TESTE, como pode ser visto no App.coonfig:
<serviceCertificate findValue="localhost" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
Gostaria de saber se tem como autenticar sem a necessidade do certificado digital e se não tiver jeito como funciona o certificado digital quando colocado em produção.
Obrigado.