Bagikan melalui


Cara: Meniru Klien pada Layanan

Meniru klien pada layanan Windows Communication Foundation (WCF) memungkinkan layanan melakukan tindakan atas nama klien. Untuk tindakan yang tunduk pada pemeriksaan daftar kontrol akses (ACL), seperti akses ke direktori dan file di komputer atau akses ke database SQL Server, pemeriksaan ACL bertentangan dengan akun pengguna klien. Topik ini menunjukkan langkah-langkah dasar yang diperlukan untuk mengaktifkan klien di domain Windows untuk mengatur tingkat peniruan klien. Untuk contoh kerja ini, lihat Meniru Klien. Untuk informasi selengkapnya tentang peniruan identitas klien, lihat Delegasi dan Peniruan.

Catatan

Saat klien dan layanan berjalan di komputer yang sama dan klien berjalan dengan akun sistem (yakni Local System atau Network Service), klien tidak dapat ditiru saat sesi aman dibuat dengan token Konteks Keamanan berstatus. WinForms atau aplikasi konsol biasanya dijalankan dengan akun yang baru masuk, sehingga akun tersebut dapat ditiru secara default. Namun, jika klien adalah halaman ASP.NET dan halaman tersebut dihosting di IIS 6.0 atau IIS 7.0, klien akan dijalankan dengan akun Network Service secara default. Semua pengikatan yang disediakan sistem yang mendukung sesi aman menggunakan token Konteks Keamanan tanpa status secara default. Namun, jika klien adalah halaman ASP.NET dan sesi aman dengan token Konteks Keamanan berstatus digunakan, klien tidak dapat ditiru. Untuk informasi selengkapnya tentang menggunakan token Konteks Keamanan berstatus dalam sesi aman, lihat Cara: Membuat Token Konteks Keamanan untuk Sesi Aman.

Untuk mengaktifkan peniruan klien dari token Windows cache pada layanan

  1. Buat layanan. Untuk tutorial prosedur dasar ini, lihat Tutorial Memulai.

  2. Gunakan pengikatan yang menggunakan autentikasi Windows dan membuat sesi, seperti NetTcpBinding atau WSHttpBinding.

  3. Saat membuat implementasi antarmuka layanan, terapkan kelas OperationBehaviorAttribute ke metode yang memerlukan peniruan klien. Atur properti Impersonation ke Required.

    [OperationBehavior(Impersonation=ImpersonationOption.Required)]
    public double Add(double a, double b)
    {
        return a + b;
    }
    
    <OperationBehavior(Impersonation:=ImpersonationOption.Required)> _
    Public Function Add(ByVal a As Double, ByVal b As Double) As Double _
       Implements ICalculator.Add
        Return a + b
    End Function
    

Untuk mengatur tingkat peniruan yang diizinkan pada klien

  1. Buat kode klien layanan dengan menggunakan Alat Utilitas Metadata ServiceModel (Svcutil.exe). Untuk informasi selengkapnya, lihat Mengakses Layanan Menggunakan Klien WCF.

  2. Setelah membuat klien WCF, atur properti AllowedImpersonationLevel kelas WindowsClientCredential ke salah satu nilai enumerasi TokenImpersonationLevel.

    Catatan

    Untuk menggunakan Delegation, autentikasi Kerberos yang dinegosiasikan (terkadang disebut Kerberos multi-kaki atau multi-langkah) harus digunakan. Untuk deskripsi tentang cara menerapkannya, lihat Praktik Terbaik untuk Keamanan.

    CalculatorClient client = new CalculatorClient("CalculatorEndpoint");
    client.ClientCredentials.Windows.AllowedImpersonationLevel =
        System.Security.Principal.TokenImpersonationLevel.Impersonation;
    
    Dim client As New CalculatorClient("CalculatorEndpoint")
    client.ClientCredentials.Windows.AllowedImpersonationLevel = _
        System.Security.Principal.TokenImpersonationLevel.Impersonation
    

Lihat juga