Dela via


<säkerhet> för <customBinding>

Anger säkerhetsalternativen för en anpassad bindning.

<Konfiguration>
  <system.serviceModel>
    <Bindningar>
      <customBinding>
        <Bindande>
          <Säkerhet >

Syntax

<security allowSerializedSigningTokenOnReply="Boolean"
          authenticationMode="AuthenticationMode"
          defaultAlgorithmSuite="SecurityAlgorithmSuite"
          includeTimestamp="Boolean"
          requireDerivedKeys="Boolean"
          keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy"
          messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign"
          messageSecurityVersion="WSSecurityJan2004/WSSecurityXXX2005"
          requireSecurityContextCancellation="Boolean"
          requireSignatureConfirmation="Boolean"
          securityHeaderLayout="Strict/Lax/LaxTimestampFirst/LaxTimestampLast">
   <issuedTokenParameters />
   <localClientSettings />
   <localServiceSettings />
   <secureConversationBootstrap />
</security>

Attribut och element

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

Attribut

Attribut beskrivning
allowSerializedSigningTokenOnReply Valfritt. Ett booleskt värde som anger om en serialiserad token kan användas vid svar. Standardvärdet är false. När du använder en dubbel bindning ignoreras true inställningen och alla inställningar som görs ignoreras.
authenticationMode Valfritt. Anger det autentiseringsläge som används mellan initieraren och svararen. Se nedan för alla värden.

Standardvärdet är sspiNegotiated.
defaultAlgorithmSuite Valfritt. Anger meddelandekryptering och nyckelomslutningsalgoritmer. Algoritmerna och nyckelstorlekarna bestäms av SecurityAlgorithmSuite klassen. Dessa algoritmer mappas till de som anges i specifikationen Security Policy Language (WS-SecurityPolicy).

Möjliga värden visas nedan. Standardvärdet är Basic256.

Det här attributet används när du arbetar med en annan plattform som väljer en uppsättning algoritmer som skiljer sig från standardvärdet. Du bör vara medveten om de relevanta algoritmernas styrkor och svagheter när du gör ändringar i den här inställningen. Det här attributet är av typen SecurityAlgorithmSuite.
includeTimestamp Ett booleskt värde som anger om tidsstämplar ingår i varje meddelande. Standardvärdet är true.
keyEntropyMode Anger hur nycklar för att skydda meddelanden beräknas. Nycklar kan endast baseras på klientnyckelmaterialet, endast på tjänstnyckelmaterialet eller en kombination av båda. Giltiga värden är

- ClientEntropy: Sessionsnyckeln baseras på viktiga data som tillhandahålls av klienten.
- ServerEntropy: Sessionsnyckeln baseras på viktiga data som tillhandahålls av servern.
- CombinedEntropy: Sessionsnyckeln baseras på de nyckeldata som tillhandahålls av klienten och tjänsten.

Standardvärdet är CombinedEntropy.

Det här attributet är av typen SecurityKeyEntropyMode.
messageProtectionOrder Anger i vilken ordning säkerhetsalgoritmer på meddelandenivå tillämpas på meddelandet. Giltiga värden innehåller följande:

- SignBeforeEncrypt: Signera först och sedan kryptera.
- SignBeforeEncryptAndEncryptSignature: Signera först, kryptera och kryptera sedan signaturen.
- EncryptBeforeSign: Kryptera först och signera sedan.

Standardvärdet beror på vilken version av WS-Security som används. Standardvärdet är SignBeforeEncryptAndEncryptSignature när du använder WS-Security 1.1. Standardvärdet är SignBeforeEncrypt när du använder WS-Security 1.0.

Det här attributet är av typen MessageProtectionOrder.
messageSecurityVersion Valfritt. Anger den version av WS-Security som används. Giltiga värden innehåller följande:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

Standardvärdet är WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 och kan uttryckas i XML som helt enkelt Default. Det här attributet är av typen MessageSecurityVersion.
requireDerivedKeys Ett booleskt värde som anger om nycklar kan härledas från de ursprungliga bevisnycklarna. Standardvärdet är true.
requireSecurityContextCancellation Valfritt. Ett booleskt värde som anger om säkerhetskontexten ska avbrytas och avslutas när den inte längre behövs. Standardvärdet är true.
requireSignatureConfirmation Valfritt. Ett booleskt värde som anger om signaturbekräftelsen för WS-Security är aktiverad. När värdet är inställt truepå bekräftas meddelandesignaturerna av svararen. När den anpassade bindningen har konfigurerats för ömsesidiga certifikat eller om den är konfigurerad att använda utfärdade token (WSS 1.1-bindningar) är det här attributet standardvärdet true. Annars är falsestandardvärdet .

Signaturbekräftelse används för att bekräfta att tjänsten svarar med full medvetenhet om en begäran.
securityHeaderLayout Valfritt. Anger ordningen på elementen i säkerhetsrubriken. Giltiga värden är

- Strict: Objekt läggs till i säkerhetshuvudet enligt den allmänna principen "deklarera före användning".
- Lax: Objekt läggs till i säkerhetshuvudet i valfri ordning som bekräftar för WSS: SOAP-meddelandesäkerhet.
- LaxWithTimestampFirst: Objekt läggs till i säkerhetshuvudet i valfri ordning som bekräftar för WSS: SOAP-meddelandesäkerhet, förutom att det första elementet i säkerhetshuvudet måste vara ett wsse:Timestamp-element.
- LaxWithTimestampLast: Objekt läggs till i säkerhetshuvudet i valfri ordning som bekräftar för WSS: SOAP-meddelandesäkerhet förutom att det sista elementet i säkerhetshuvudet måste vara ett wsse:Timestamp-element.

Standardvärdet är Strict.

Det här elementet är av typen SecurityHeaderLayout.

authenticationMode-attribut

Värde beskrivning
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

defaultAlgorithm-attribut

Värde beskrivning
Basic128 Använd Aes128-kryptering, Sha1 för meddelandesammandrag och Rsa-oaep-mgf1p för nyckelomslutning.
Basic192 Använd Aes192-kryptering, Sha1 för meddelandesammandrag, Rsa-oaep-mgf1p för nyckelomslutning.
Basic256 Använd Aes256-kryptering, Sha1 för meddelandesammandrag, Rsa-oaep-mgf1p för nyckelomslutning.
Basic256Rsa15 Använd Aes256 för meddelandekryptering, Sha1 för meddelandesammandrag och Rsa15 för nyckelomslutning.
Basic192Rsa15 Använd Aes192 för meddelandekryptering, Sha1 för meddelandesammandrag och Rsa15 för nyckelomslutning.
Tripledes Använd TripleDes-kryptering, Sha1 för meddelandesammandrag, Rsa-oaep-mgf1p för nyckelomslutning.
Basic128Rsa15 Använd Aes128 för meddelandekryptering, Sha1 för meddelandesammandrag och Rsa15 för nyckelomslutning.
TripleDesRsa15 Använd TripleDes-kryptering, Sha1 för meddelandesammandrag och Rsa15 för nyckelomslutning.
Basic128Sha256 Använd Aes128 för meddelandekryptering, Sha256 för meddelandesammandrag och Rsa-oaep-mgf1p för nyckelomslutning.
Basic192Sha256 Använd Aes192 för meddelandekryptering, Sha256 för meddelandesammandrag och Rsa-oaep-mgf1p för nyckelomslutning.
Basic256Sha256 Använd Aes256 för meddelandekryptering, Sha256 för meddelandesammandrag och Rsa-oaep-mgf1p för nyckelomslutning.
TripleDesSha256 Använd TripleDes för meddelandekryptering, Sha256 för meddelandesammandrag och Rsa-oaep-mgf1p för nyckelomslutning.
Basic128Sha256Rsa15 Använd Aes128 för meddelandekryptering, Sha256 för meddelandesammandrag och Rsa15 för nyckelomslutning.
Basic192Sha256Rsa15 Använd Aes192 för meddelandekryptering, Sha256 för meddelandesammandrag och Rsa15 för nyckelomslutning.
Basic256Sha256Rsa15 Använd Aes256 för meddelandekryptering, Sha256 för meddelandesammandrag och Rsa15 för nyckelomslutning.
TripleDesSha256Rsa15 Använd TripleDes för meddelandekryptering, Sha256 för meddelandesammandrag och Rsa15 för nyckelomslutning.

Underordnade element

Element Description
<issuedTokenParameters> Anger en aktuell utfärdad token. Det här elementet är av typen IssuedTokenParametersElement.
<localClient Inställningar> Anger säkerhetsinställningarna för en lokal klient för den här bindningen. Det här elementet är av typen LocalClientSecuritySettingsElement.
<localService Inställningar> Anger säkerhetsinställningarna för en lokal tjänst för den här bindningen. Det här elementet är av typen LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Anger de standardvärden som används för att initiera en säker konversationstjänst.

Överordnade element

Element Description
<Bindande> Definierar alla bindningsfunktioner i den anpassade bindningen.

Anmärkningar

Mer information om hur du använder det här elementet finns i SecurityBindingElement Authentication Modes (Autentiseringslägen för SecurityBindingElement) och How to: Create a Custom Binding Using the SecurityBindingElement (Skapa en anpassad bindning med SecurityBindingElement).

Exempel

I följande exempel visas hur du konfigurerar säkerhet med hjälp av en anpassad bindning. Den visar hur du använder en anpassad bindning för att aktivera säkerhet på meddelandenivå tillsammans med en säker transport. Detta är användbart när en säker transport krävs för att överföra meddelandena mellan klienten och tjänsten och samtidigt måste meddelandena vara säkra på meddelandenivå. Den här konfigurationen stöds inte av bindningar som tillhandahålls av systemet.

Tjänstkonfigurationen definierar en anpassad bindning som stöder TCP-kommunikation som skyddas med TLS/SSL-protokollet och Windows-meddelandesäkerhet. Den anpassade bindningen använder ett tjänstcertifikat för att autentisera tjänsten på transportnivå och för att skydda meddelandena under överföringen mellan klient och tjänst. Detta görs av bindningselementet <sslStreamSecurity> . Tjänstens certifikat har konfigurerats med hjälp av ett tjänstbeteende.

Dessutom använder den anpassade bindningen meddelandesäkerhet med windows-autentiseringstypen – det här är standardtypen för autentiseringsuppgifter. Detta görs av säkerhetsbindningselementet. Både klienten och tjänsten autentiseras med hjälp av säkerhet på meddelandenivå om Kerberos-autentiseringsmekanismen är tillgänglig. Om Kerberos-autentiseringsmekanismen inte är tillgänglig används NTLM-autentisering. NTLM autentiserar klienten till tjänsten men autentiserar inte tjänsten till klienten. Säkerhetsbindningselementet är konfigurerat för att använda SecureConversation authenticationType, vilket resulterar i att en säkerhetssession skapas på både klienten och tjänsten. Detta krävs för att tjänstens duplex-kontrakt ska fungera. Mer information om hur du kör det här exemplet finns i Anpassad bindningssäkerhet.

<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService"
               behaviorConfiguration="CalculatorServiceBehavior">
        <host>
          <baseAddresses>
            <!-- use following base address -->
            <add baseAddress="net.tcp://localhost:8000/ServiceModelSamples/Service"/>
          </baseAddresses>
        </host>
        <endpoint address=""
                  binding="customBinding"
                  bindingConfiguration="Binding1"
                  contract="Microsoft.ServiceModel.Samples.ICalculatorDuplex" />
        <!-- the mex endpoint is exposed at net.tcp://localhost:8000/ServiceModelSamples/service/mex -->
        <endpoint address="mex"
                  binding="mexTcpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <!-- configure a custom binding -->
      <customBinding>
        <binding name="Binding1">
          <security authenticationMode="SecureConversation"
                    requireSecurityContextCancellation="true">
          </security>
          <textMessageEncoding messageVersion="Soap12WSAddressing10"
                               writeEncoding="utf-8" />
          <sslStreamSecurity requireClientCertificate="false" />
          <tcpTransport />
        </binding>
      </customBinding>
    </bindings>
    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata />
          <serviceDebug includeExceptionDetailInFaults="False" />
          <serviceCredentials>
            <serviceCertificate findValue="localhost"
                                storeLocation="LocalMachine"
                                storeName="My"
                                x509FindType="FindBySubjectName" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Se även