Bagikan melalui


<keamanan><customBinding>

Menentukan opsi keamanan untuk pengikatan kustom.

<konfigurasi>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <pengikatan>
          <security>

Sintaks

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

Atribut dan Elemen

Bagian berikut menjelaskan atribut, elemen anak, dan elemen induk

Atribut

Atribut Deskripsi
allowSerializedSigningTokenOnReply Opsional. Nilai Boolean yang menentukan apakah token berseri dapat digunakan pada balasan. Nilai defaultnya adalah false. Saat menggunakan pengikatan ganda, pengaturan default ke pengaturan true apa pun yang dibuat akan diabaikan.
authenticationMode Opsional. Menentukan mode autentikasi yang digunakan antara inisiator dan responder. Lihat di bawah untuk semua nilai.

Default adalah sspiNegotiated.
defaultAlgorithmSuite Opsional. Mengatur enkripsi pesan dan algoritma key-wrap. Algoritma dan ukuran kunci ditentukan oleh kelas SecurityAlgorithmSuite. Algoritma ini dipetakan ke yang ditentukan dalam spesifikasi Bahasa Kebijakan Keamanan (WS-SecurityPolicy).

Nilai yang mungkin ditunjukkan di bawah ini. Nilai defaultnya adalah Basic256.

Atribut ini digunakan saat bekerja dengan platform berbeda yang memilih serangkaian algoritma yang berbeda dari default. Anda harus menyadari kekuatan dan kelemahan algoritma yang relevan saat melakukan modifikasi pada pengaturan ini. Atribut ini berjenis SecurityAlgorithmSuite.
includeTimestamp Nilai Boolean yang menentukan apakah stempel waktu disertakan dalam setiap pesan. Default adalah true.
keyEntropyMode Menentukan cara kunci untuk mengamankan pesan dihitung. Kunci hanya dapat didasarkan pada materi kunci klien, hanya pada materi kunci layanan atau kombinasi keduanya. Nilai yang valid adalah

- ClientEntropy: Kunci sesi didasarkan pada data utama yang disediakan oleh klien.
- ServerEntropy: Kunci sesi didasarkan pada data utama yang disediakan oleh server.
- CombinedEntropy: Kunci sesi didasarkan pada data utama yang disediakan oleh klien dan layanan.

Default adalah CombinedEntropy.

Atribut ini berjenis SecurityKeyEntropyMode.
messageProtectionOrder Mengatur urutan di mana algoritma keamanan tingkat pesan diterapkan ke pesan. Nilai yang valid mencakup hal-hal berikut:

- SignBeforeEncrypt: Tanda tangani terlebih dahulu, lalu enkripsi.
- SignBeforeEncryptAndEncryptSignature: Tanda tangani terlebih dahulu, enkripsi, lalu enkripsi tanda tangan.
- EncryptBeforeSign: Enkripsi terlebih dahulu, lalu tanda tangani.

Nilai default tergantung pada versi WS-Security yang digunakan. Nilai defaultnya adalah SignBeforeEncryptAndEncryptSignature saat menggunakan WS-Security 1.1. Nilai defaultnya adalah SignBeforeEncrypt saat menggunakan WS-Security 1.0.

Atribut ini berjenis MessageProtectionOrder.
messageSecurityVersion Opsional. Mengatur versi WS-Security yang digunakan. Nilai yang valid mencakup hal-hal berikut:

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

Defaultnya adalah WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 dan dapat dinyatakan dalam XML Default secara sederhana. Atribut ini berjenis MessageSecurityVersion.
requireDerivedKeys Nilai Boolean yang menentukan apakah kunci dapat berasal dari kunci bukti asli. Default adalah true.
requireSecurityContextCancellation Opsional. Nilai Boolean yang menentukan apakah konteks keamanan harus dibatalkan dan dihentikan ketika tidak lagi diperlukan. Default adalah true.
requireSignatureConfirmation Opsional. Nilai Boolean yang menentukan apakah konfirmasi tanda tangan WS-Security diaktifkan. Ketika diatur ke true, tanda tangan pesan dikonfirmasi oleh responden. Ketika pengikatan kustom dikonfigurasi untuk sertifikat timbal balik atau dikonfigurasi untuk menggunakan token yang dikeluarkan (pengikatan WSS 1.1) atribut ini default ke true. Jika tidak, defaultnya adalah false.

Konfirmasi tanda tangan digunakan untuk mengonfirmasi bahwa layanan merespons kesadaran penuh atas permintaan.
securityHeaderLayout Opsional. Menentukan urutan elemen di header keamanan. Nilai yang valid adalah

- Strict: Item ditambahkan ke header keamanan sesuai dengan prinsip umum "nyatakan sebelum digunakan".
- Lax: Item ditambahkan ke header keamanan dalam urutan apa pun yang mengonfirmasi ke WSS: SOAP Message security.
- LaxWithTimestampFirst: Item ditambahkan ke header keamanan dalam urutan apa pun yang mengonfirmasi ke WSS: SOAP Message security kecuali bahwa elemen terakhir di header keamanan harus berupa elemen wsse:Timestamp.
- LaxWithTimestampLast: Item ditambahkan ke header keamanan dalam urutan apa pun yang mengonfirmasi ke WSS: SOAP Message security kecuali bahwa elemen terakhir di header keamanan harus berupa elemen wsse:Timestamp.

Default adalah Strict.

Elemen ini berjenis SecurityHeaderLayout.

Atribut authenticationMode

Nilai Deskripsi
String AnonymousForCertificate

AnonymousForSslNegotiated

CertificateOverTransport

IssuedToken

IssuedTokenForCertificate

IssuedTokenForSslNegotiated

IssuedTokenOverTransport

Kerberos

KerberosOverTransport

MutualCertificate

MutualCertificateDuplex

MutualSslNegotiated

SecureConversation

SspiNegotiated

UserNameForCertificate

UserNameForSslNegotiated

UserNameOverTransport

SspiNegotiatedOverTransport

Atribut defaultAlgorithm

Nilai Deskripsi
Basic128 Gunakan enkripsi Aes128, Sha1 untuk digest, dan Rsa-oaep-mgf1p untuk key wrap.
Basic192 Gunakan enkripsi Aes192, Sha1 untuk digest, Rsa-oaep-mgf1p untuk key wrap.
Basic256 Gunakan enkripsi Aes256, Sha1 untuk digest, Rsa-oaep-mgf1p untuk key wrap.
Basic256Rsa15 Gunakan Aes256 untuk enkripsi pesan, Sha1 untuk digest dan Rsa15 untuk key wrap.
Basic192Rsa15 Gunakan Aes192 untuk enkripsi pesan, Sha1 untuk digest dan Rsa15 untuk key wrap.
TripleDes Gunakan enkripsi TripleDes, Sha1 untuk digest, Rsa-oaep-mgf1p untuk key wrap.
Basic128Rsa15 Gunakan Aes128 untuk enkripsi pesan, Sha1 untuk digest dan Rsa15 untuk key wrap.
TripleDesRsa15 Gunakan enkripsi TripleDes, Sha1 untuk digest dan Rsa15 untuk key wrap.
Basic128Sha256 Gunakan Aes128 untuk enkripsi pesan, Sha256 untuk hash pesan dan Rsa-oaep-mgf1p untuk pembungkus kunci.
Basic192Sha256 Gunakan Aes192 untuk enkripsi pesan, Sha256 untuk digest dan Rsa-oaep-mgf1p untuk key wrap.
Basic256Sha256 Gunakan Aes256 untuk enkripsi pesan, Sha256 untuk digest dan Rsa-oaep-mgf1p untuk key wrap.
TripleDesSha256 Gunakan TripleDes untuk enkripsi pesan, Sha256 untuk digest dan Rsa-oaep-mgf1p untuk key wrap.
Basic128Sha256Rsa15 Gunakan Aes128 untuk enkripsi pesan, Sha256 untuk digest dan Rsa15 untuk key wrap.
Basic192Sha256Rsa15 Gunakan Aes192 untuk enkripsi pesan, Sha256 untuk digest dan Rsa15 untuk key wrap.
Basic256Sha256Rsa15 Gunakan Aes256 untuk enkripsi pesan, Sha256 untuk digest dan Rsa15 untuk key wrap.
TripleDesSha256Rsa15 Gunakan TripleDes untuk enkripsi pesan, Sha256 untuk digest dan Rsa15 untuk key wrap.

Elemen Anak

Elemen Deskripsi
<issuedTokenParameters> Menentukan token yang dikeluarkan saat ini. Elemen ini berjenis IssuedTokenParametersElement.
<localClientSettings> Menentukan pengaturan keamanan klien lokal untuk pengikatan ini. Elemen ini berjenis LocalClientSecuritySettingsElement.
<localServiceSettings> Menentukan pengaturan keamanan layanan lokal untuk pengikatan ini. Elemen ini berjenis LocalServiceSecuritySettingsElement.
<secureConversationBootstrap> Menentukan nilai default yang digunakan untuk memulai layanan percakapan aman.

Elemen Induk

Elemen Deskripsi
<pengikatan> Mendefinisikan semua kemampuan pengikatan dari pengikatan kustom.

Keterangan

Untuk informasi selengkapnya tentang menggunakan elemen ini, lihat Mode Autentikasi SecurityBindingElement dan Cara: Membuat Pengikatan Kustom Menggunakan SecurityBindingElement.

Contoh

Sampel ini menunjukkan cara mengonfigurasi keamanan dengan menggunakan pengikatan kustom. Sampel ini menunjukkan cara menggunakan pengikatan kustom untuk mengaktifkan keamanan tingkat pesan bersama dengan transportasi yang aman. Hal ini berguna ketika transportasi aman diperlukan untuk mengirimkan pesan antara klien dan layanan dan secara bersamaan pesan harus aman pada tingkat pesan. Konfigurasi ini tidak didukung oleh pengikatan yang disediakan sistem.

Konfigurasi layanan mendefinisikan pengikatan kustom yang mendukung komunikasi TCP yang dilindungi menggunakan protokol TLS/SSL, dan keamanan pesan Windows. Pengikatan kustom menggunakan sertifikat layanan untuk mengautentikasi layanan pada tingkat transportasi dan untuk melindungi pesan selama transmisi antara klien dan layanan. Ini dicapai oleh elemen pengikat <sslStreamSecurity>. Sertifikat layanan dikonfigurasi menggunakan perilaku layanan.

Selain itu, pengikatan kustom menggunakan keamanan pesan dengan jenis kredensial Windows - ini adalah jenis kredensial default. Ini dicapai oleh elemen pengikat keamanan. Klien dan layanan diautentikasi menggunakan keamanan tingkat pesan jika mekanisme autentikasi Kerberos tersedia. Jika mekanisme autentikasi Kerberos tidak tersedia, autentikasi NTLM digunakan. NTLM mengautentikasi klien ke layanan tetapi tidak mengautentikasi layanan ke klien. Elemen pengikat keamanan dikonfigurasi untuk menggunakan SecureConversation authenticationType, yang menghasilkan pembuatan sesi keamanan pada klien dan layanan. Hal ini dibutuhkan untuk mengaktifkan kontrak dupleks layanan untuk bekerja. Untuk informasi selengkapnya tentang menjalankan contoh ini, lihat Keamanan Pengikatan Kustom.

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

Baca juga