簡體   English   中英

WCF Web服務 - 在同一服務器上進行多跳模擬

[英]WCF Web Services - Multiple Hop impersonation on the same server

我有3個Web服務,都位於同一台服務器上。

我的客戶端稱服務A,它冒充客戶端呼叫服務B,一切都很順利。

現在,我想模擬服務B的調用者(這是我的用戶名)來調用服務C.當我使用與以前相同的技術時(AllowedImpersonationLevel = Impersonate,user.Impersonate()),用戶不會傳遞給服務C相反,服務C將用戶視為我在IIS中運行它的用戶(這是一個UPN,而不是標准的NETWORK SERVICE帳戶)。

為了讓這個工作,我需要做些什么特別的事情嗎? 這是代表團問題嗎? (我認為這不是委托,因為它們都在同一台服務器上)

謝謝!

您可以嘗試在服務C上啟用ASP.Net兼容性

在Web.cofig中

<system.web>
   <identity impersonate="true"/>
   <authentication mode="Windows"/>
</system.web>
<system.serviceModel>
   <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

在您的服務類中

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service : IService
{
    public string ExecuteRequest(string xmlRequest)
    {
        IRequestManager requestManager = new RequestManager();
        return requestManager.ProcessRequest(xmlRequest);
    }

}

我原本期望必須使用委托,因為你跨越了兩次進程邊界。 你試過TokenImpersonationLevel.Delegation嗎?

您需要在此方案中委派。 您需要的配置是ImpersonationLevel.Delegation(在配置或代碼中設置)。 看一下關於codeplex的WCF安全指南,它是一個非常好的資源。 小心實現委托,特別是在生產環境中,要求不僅僅是在配置文件中選擇正確的選項。 您需要確保連接到的應用程序(例如SQL Server)已配置為委派,並且在活動目錄等中滿足某些基礎結構要求,例如服務主體名稱(SPN)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM