Bagikan melalui


Windows Keamanan Pesan

Sampel ini menunjukkan cara mengonfigurasi pengikatan WSHttpBinding untuk menggunakan keamanan tingkat pesan dengan NTLM. Sampel ini berdasarkan Memulai. Dalam sampel ini, layanan dihosting di Layanan Informasi Internet (IIS) dan klien adalah aplikasi konsol (.exe).

Catatan

Prosedur penyiapan dan petunjuk pembuatan untuk sampel ini terdapat di akhir topik ini.

Keamanan default untuk <wsHttpBinding> adalah keamanan pesan menggunakan NTLM. File konfigurasi dalam sampel ini secara eksplisit mengatur atribut mode<keamanan> ke Message dan atribut clientCredentialType ke Windows. Nilai-nilai ini adalah nilai default untuk pengikatan ini, tetapi telah dikonfigurasi secara eksplisit, seperti yang ditunjukkan dalam konfigurasi sampel berikut untuk menunjukkan penggunaannya.

<bindings>
    <wsHttpBinding>
        <binding>
            <security mode="Message">
                <message clientCredentialType="Windows"/>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

Konfigurasi titik akhir klien terdiri dari alamat absolut untuk titik akhir layanan, pengikatan, dan kontrak. Pengikatan klien dikonfigurasi dengan securityMode dan authenticationMode yang sesuai.

<system.serviceModel>
  <client>
    <endpoint address=
            "http://localhost/servicemodelsamples/service.svc"
            binding="wsHttpBinding"
            bindingConfiguration="Binding1"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  </client>

  <bindings>
    <wsHttpBinding>
      <!-- The default security for the WSHttpBinding is -->
      <!-- Message security using Windows authentication. -->
      <!-- This configuration explicitly defines the security mode -->
      <!-- as Message and the clientCredentialType as Windows -->
      <!-- for demonstration purposes. -->
      <binding name="Binding1">
        <security mode="Message">
          <message clientCredentialType="Windows"/>
        </security>
      </binding>
    </wsHttpBinding>
  </bindings>
</system.serviceModel>

Kode sumber layanan telah dimodifikasi untuk menunjukkan bagaimana ServiceSecurityContext dapat digunakan untuk mengakses identitas pemanggil.

public string GetCallerIdentity()
{
    // The Windows identity of the caller can be accessed on the ServiceSecurityContext.WindowsIdentity.
    return OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
}

Saat Anda menjalankan sampel, permintaan dan respons operasi ditampilkan di jendela konsol klien. Metode pertama yang disebut - GetCallerIdentity - mengembalikan nama identitas penelepon kembali ke klien. Tekan ENTER di jendela klien untuk mematikan klien.

Untuk menyiapkan, membangun, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti petunjuknya di Membangun Sampel WCF.

  3. Untuk menjalankan sampel dalam konfigurasi tunggal atau lintas komputer, ikuti petunjuk di Menjalankan Sampel Windows Communication Foundation.