Compartilhar via


<mensagem> de <netHttpBinding>

Define as configurações de segurança no nível da mensagem do <netHttpBinding>.

<configuration>
  <system.serviceModel>
    <bindings>
      <netHttpBinding>
        <binding>
          <security>
            <message>

Syntax

<message algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
         clientCredentialType="UserName/Certificate" />

Atributos e elementos

As seções a seguir descrevem os atributos, os elementos filho e os elementos pai

Atributos

Atributo Descrição
algorithmSuite Define a criptografia de mensagem e os algoritmos de encapsulamento de chave. Esse atributo é do tipo SecurityAlgorithmSuite, que especifica os algoritmos e os tamanhos de chave. Esses algoritmos são mapeados para aqueles existentes na especificação WS-SecurityPolicy (Linguagem de Política de Segurança).

O valor padrão é Basic256.
clientCredentialType Especifica o tipo de credencial a ser usada ao executar a autenticação de cliente usando a segurança baseada em mensagem. O padrão é UserName.

clientCredentialType Attribute

Valor Descrição
UserName – Requer que o cliente seja autenticado no servidor com uma credencial de UserName. Essa credencial precisa ser especificada usando o elemento <clientCredentials>.
– O WCF não dá suporte ao envio de um resumo de senha ou de derivação de chaves usando senhas e o uso dessas chaves para a segurança da mensagem. Assim, o WCF impõe que o transporte seja protegido ao usar credenciais de UserName. Para o basicHttpBinding, isso requer a configuração de um canal SSL.
Certificado Exige que o cliente seja autenticado no servidor usando um certificado. A credencial do cliente nesse caso precisa ser especificada usando <clientCredentials> e o <clientCertificate>. Além disso, ao usar o modo de segurança da mensagem, o cliente precisa ser provisionado com o certificado de serviço. A credencial de serviço nesse caso precisa ser especificada usando o elemento de classe ClientCredentials ou de comportamento ClientCredentials e especificando o certificado de serviço usando o elemento <serviceCertificate> do serviceCredentials.

Elementos filho

Nenhum

Elementos pai

Elemento Descrição
<security> elemento de <netHttpBinding> Define os recursos de segurança para o Elemento <netHttpBinding>.

Exemplo

Este exemplo demonstra como implementar um aplicativo que usa o basicHttpBinding e a segurança da mensagem. No exemplo de configuração a seguir para um serviço, a definição do ponto de extremidade especifica o basicHttpBinding e faz referência a uma configuração de associação chamada Binding1. O certificado que o serviço usa para se autenticar no cliente é definido na seção behaviors do arquivo de configuração sob o elemento serviceCredentials. O modo de validação que se aplica ao certificado que o cliente usa para se autenticar no serviço também é definido na seção behaviors sob o elemento clientCertificate.

Os mesmos detalhes de associação e segurança são especificados no arquivo de configuração do cliente.

<system.serviceModel>
  <services>
    <service name="Microsoft.ServiceModel.Samples.CalculatorService"
             behaviorConfiguration="CalculatorServiceBehavior">
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:8000/ServiceModelSamples/service" />
        </baseAddresses>
      </host>
      <!-- this endpoint is exposed at the base address provided by host: http://localhost:8000/ServiceModelSamples/service  -->
      <endpoint address=""
                binding="basicHttpBinding"
                bindingConfiguration="Binding1"
                contract="Microsoft.ServiceModel.Samples.ICalculator" />
      <!-- the mex endpoint is exposed at http://localhost:8000/ServiceModelSamples/service/mex -->
      <endpoint address="mex"
                binding="mexHttpBinding"
                contract="IMetadataExchange" />
    </service>
  </services>
  <bindings>
    <basicHttpBinding>
      <!-- This configuration defines the SecurityMode as Message and
           the clientCredentialType as Certificate. -->
      <binding name="Binding1" >
        <security mode = "Message">
          <message clientCredentialType="Certificate" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
  <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
  <behaviors>
    <serviceBehaviors>
      <behavior name="CalculatorServiceBehavior">
        <serviceMetadata httpGetEnabled="True" />
        <serviceDebug includeExceptionDetailInFaults="False" />
        <!-- 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. -->
        <serviceCredentials>
          <serviceCertificate findValue="localhost"
                              storeLocation="LocalMachine"
                              storeName="My"
                              x509FindType="FindBySubjectName" />
          <clientCertificate>
            <!-- Setting the certificateValidationMode to PeerOrChainTrust means that if the certificate
                 is in the user's Trusted People store, then it will be trusted without performing a
                 validation of the certificate's issuer chain. This setting is used here for convenience so that the
                 sample can be run without having to have certificates issued by a certification authority (CA).
                 This setting is less secure than the default, ChainTrust. The security implications of this
                 setting should be carefully considered before using PeerOrChainTrust in production code. -->
            <authentication certificateValidationMode="PeerOrChainTrust" />
          </clientCertificate>
        </serviceCredentials>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

Confira também