共用方式為


HOW TO:在服務上模擬用戶端

模擬 Windows Communication Foundation (WCF) 服務上的用戶端使服務可以代表用戶端執行動作。關於存取控制清單 (ACL) 檢查的動作,例如存取機器上的目錄和檔案或存取 SQL Server 資料庫,請根據用戶端使用者帳戶檢查 ACL。本主題說明在 Windows 網域中啟用用戶端以設定用戶端模擬等級所需的基本步驟。如需此文件的實用範例,請參閱Impersonating the Client。如需詳細資訊用戶端模擬的詳細資訊,請參閱使用 WCF 的委派和模擬

ms731090.note(zh-tw,VS.100).gif注意:
用戶端和服務在相同電腦上執行,且用戶端在系統帳戶下執行時 (也就是 Local SystemNetwork Service),以可設定狀態的安全性內容權杖建立安全的工作階段時無法模擬用戶端。WinForms 或主控台應用程式通常在目前登入的帳戶下執行,因此根據預設值可以模擬該帳戶。但當用戶端是 ASP.NET 頁面,而且該頁面是裝載於 IIS 6.0 或 IIS 7.0 中時,根據預設,用戶端不會以 Network Service 帳戶執行。所有支援安全工作階段的系統提供繫結預設為使用沒有狀態的安全性內容權杖。不過,如果用戶端是 ASP.NET 頁面,而且使用具有可設定狀態的安全性內容權杖的安全工作階段,則無法模擬用戶端。如需詳細資訊在安全工作階段中使用可設定狀態的安全性內容權杖的詳細資訊,請參閱 HOW TO:為安全工作階段建立安全性內容權杖

若要從服務上的快取 Windows 權杖啟用用戶端模擬

  1. 建立服務。如需此基本程序的教學課程,請參閱使用者入門教學課程

  2. 使用運用 Windows 驗證並建立工作階段的繫結,例如 NetTcpBindingWSHttpBinding

  3. 建立服務的介面實作時,將 OperationBehaviorAttribute 類別套用至需要用戶端模擬的方法。將 Impersonation 屬性設定為 Required

    <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 
    
    [OperationBehavior(Impersonation=ImpersonationOption.Required)]
    public double Add(double a, double b)
    {
        return a + b;
    }
    

若要設定用戶端上的允許模擬等級

  1. 使用 ServiceModel 中繼資料公用程式工具 (Svcutil.exe) 建立服務用戶端程式碼。如需詳細資訊,請參閱 使用 WCF 用戶端存取服務.

  2. 建立 WCF 用戶端後,將 WindowsClientCredential 類別的 AllowedImpersonationLevel 屬性設定成為其中一個 TokenImpersonationLevel 列舉值。

    ms731090.note(zh-tw,VS.100).gif注意:
    若要使用 Delegation,必須使用交涉的 Kerberos 驗證 (有時稱為 multi-legmulti-step Kerberos)。如需如何實作此作業的說明,請參閱WCF 中安全性的最佳做法

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

另請參閱

工作

Impersonating the Client

參考

OperationBehaviorAttribute
TokenImpersonationLevel

概念

使用 WCF 的委派和模擬