none
Tem Como Fazer Autenticação no WCF Sem Utilizar Certificação Digital? RRS feed

  • Pergunta

  • 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.
    quinta-feira, 22 de outubro de 2009 12:43

Respostas

Todas as Respostas