Dela via


<meddelande i><netHttpBinding>

Definierar inställningarna för säkerhet på meddelandenivå för <netHttpBinding>.

<Konfiguration>
  <system.serviceModel>
    <Bindningar>
      <netHttpBinding>
        <Bindande>
          <Säkerhet>
            <Meddelande>

Syntax

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

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element

Attribut

Attribut Beskrivning
algorithmSuite Anger algoritmerna för meddelandekryptering och nyckelomslutning. Det här attributet är av typen SecurityAlgorithmSuite, som anger algoritmerna och nyckelstorlekarna. Dessa algoritmer mappas till de som anges i specifikationen Security Policy Language (WS-SecurityPolicy).

Standardvärdet är Basic256.
clientCredentialType Anger vilken typ av autentiseringsuppgift som ska användas vid klientautentisering med hjälp av meddelandebaserad säkerhet. Standardvärdet är UserName.

clientCredentialType-attribut

Värde Beskrivning
Användarnamn – Kräver att klienten autentiseras på servern med autentiseringsuppgifter för Användarnamn. Den här autentiseringsuppgiften måste anges med elementet <clientCredentials> .
- WCF har inte stöd för att skicka lösenordssammandrag eller härleda nycklar med hjälp av lösenord och använda sådana nycklar för meddelandesäkerhet. Därför framtvingar WCF att transporten skyddas när autentiseringsuppgifterna för Användarnamn används. basicHttpBindingFör kräver detta att du konfigurerar en SSL-kanal.
Certifikat Kräver att klienten autentiseras mot servern med hjälp av ett certifikat. Klientens autentiseringsuppgifter i det här fallet måste anges med och <clientCertificateclientCredentials<>>. När du använder meddelandesäkerhetsläget måste klienten dessutom etableras med tjänstcertifikatet. Tjänstautentiseringsuppgifterna i det här fallet måste anges med hjälp av ClientCredentials klass- eller ClientCredentials beteendeelementet och ange tjänstcertifikatet med hjälp <av serviceCertificate-elementet> i serviceCredentials.

Underordnade element

Ingen

Överordnade element

Element Beskrivning
<security> element i <netHttpBinding> Definierar säkerhetsfunktionerna för elementet <netHttpBinding> .

Exempel

Det här exemplet visar hur du implementerar ett program som använder basicHttpBinding och meddelandesäkerhet. I följande konfigurationsexempel för en tjänst anger slutpunktsdefinitionen basicHttpBinding och refererar till en bindningskonfiguration med namnet Binding1. Certifikatet som tjänsten använder för att autentisera sig mot klienten anges i avsnittet i behaviors konfigurationsfilen under elementet serviceCredentials . Valideringsläget som gäller för certifikatet som klienten använder för att autentisera sig för tjänsten anges också i behaviors avsnittet under elementet clientCertificate .

Samma bindning och säkerhetsinformation anges i klientkonfigurationsfilen.

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

Se även