Condividi tramite


<messaggio> di <basicHttpBinding>

Definisce le impostazioni per la sicurezza a livello di messaggio di <basicHttpBinding>.

<Configurazione>
  <system.serviceModel>
    <Associazioni>
      <basicHttpBinding>
        <Associazione>
          <Sicurezza>
            <Messaggio>

Sintassi

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

Attributi ed elementi

Nelle sezioni seguenti vengono descritti attributi, elementi figlio ed elementi padre.

Attributi

Attributo Descrizione
algorithmSuite Imposta la crittografia dei messaggi e gli algoritmi di incapsulamento della chiave. L'attributo è di tipo SecurityAlgorithmSuite, che specifica gli algoritmi e le dimensioni della chiave. Questi algoritmi sono associati a quelli indicati nella specifica Security Policy Language (WS-SecurityPolicy).

Il valore predefinito è Basic256.
clientCredentialType Specifica il tipo di credenziale da usare se l'autenticazione client viene eseguita usando la sicurezza basata sul messaggio. Il valore predefinito è UserName.

Attributo clientCredentialType

Valore Descrizione
UserName - Richiede che il client venga autenticato nel server con credenziali UserName. Questa credenziale deve essere specificata usando le< credenziali client.>
- WCF non supporta l'invio di un digest della password o la derivazione di chiavi tramite password e l'uso di tali chiavi per la sicurezza dei messaggi. Wcf impone pertanto che il trasporto venga protetto quando si usano le credenziali UserName. Per basicHttpBinding, questo richiede l'impostazione di un canale SSL.
Certificato Richiede che l'autenticazione del client sul server avvenga mediante un certificato. Le credenziali client in questo caso devono essere specificate usando <clientCredentials> e <clientCertificate>. Inoltre, quando si usa la modalità di sicurezza del messaggio, è necessario eseguire il provisioning del client con il certificato del servizio. In questo caso, è necessario specificare le credenziali del servizio usando ClientCredentials l'elemento classe o ClientCredentials comportamento e specificando il certificato del servizio usando serviceCertificate<>.

Elementi figlio

Nessuno

Elementi padre

Elemento Descrizione
<Sicurezza> Definisce le funzionalità di sicurezza per basicHttpBinding<>.

Esempio

In questo esempio viene dimostrato come implementare un'applicazione che usa basicHttpBinding e la sicurezza del messaggio. Nel seguente esempio di configurazione di un servizio, la definizione dell'endpoint specifica basicHttpBinding e fa riferimento a una configurazione di associazione denominata Binding1. Il certificato usato dal servizio per l'autenticazione con il client è impostato nella sezione behaviors del file di configurazione sotto l'elemento serviceCredentials. Anche la modalità di convalida applicata al certificato usato dal servizio per l'autenticazione con il client è impostata nella sezione behaviors del file di configurazione sotto l'elemento clientCertificate.

Gli stessi dettagli sull'associazione e la sicurezza sono specificati nel file di configurazione del client.

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

Vedi anche