共用方式為


IIS 與 .NET Framework 安全性

Windows Server AppFabric 使用 IIS 與 .NET Framework 4 的強大安全性功能來保護在 Windows 處理序啟用服務 (WAS) 中主控的 .NET Framework 4 服務。若要正確地在 AppFabric 中設定用戶端對伺服器的安全性,請務必了解 IIS 與 .NET Framework 中的安全性選項。

一般而言,您有許多層的安全性選項可用,而且您應該根據您的環境需求選擇最適當的安全性選項。每個安全性階層都提供保護特定資源安全的能力。例如,IIS 工具通常提供保護 IIS 成品 (例如,網站與應用程式) 的機制;而 .NET Framework 4 安全性設定則可以套用至 WCF/WF 服務概念 (例如,服務、端點與操作)。

如需有關安全性的詳細資訊,請參閱 Windows Communication Foundation 安全性 (https://go.microsoft.com/fwlink/?LinkId=183157) (可能為英文網頁) 與 IIS 安全性 (https://go.microsoft.com/fwlink/?LinkId=183159) (可能為英文網頁)。

IIS 安全性與 AppFabric

IIS 會影響呼叫應用程式之用戶端的安全性,以及存取監控與持續性資料儲存區之 .NET Framework 服務的安全性。IIS 的下列方面會影響 AppFabric 的安全性:

  • IIS_IUSRS。 用於管理在執行階段存取預設 IIS 安裝之檔案與資料夾之存取權的 Windows 安全性群組。

    security安全性 注意
    請勿將 Windows 安全性群組 IIS_IUSRS 與 SQL Server 登入名稱 IIS_IUSRS 搞混。它們分別與不同的實體相關。

  • 應用程式集區身分識別。 IIS 會在執行階段動態地將所有應用程式集區身分識別插入至 IIS_IUSRS 群組。此安全性群組會被授與存取必要資料儲存區的權限,特別是持續性資料儲存區。如需詳細資訊,請參閱 SQL Server 安全性

AppFabric 的 .NET Framework 安全性

當我們討論在 AppFabric 中設定之 .NET Framework 服務的安全性時,我們實際上 指的是 WCF。WCF 定義在 WCF 用戶端與 .NET Framework (WCF 或 WF) 服務之間使用的傳輸通訊協定。它是 .NET Framework 的一部分,後者提供統一程式設計模型供您快速建置可控制 Web 與服務間之通訊的服務導向應用程式。WCF 不僅整合現有的安全性基礎結構,也使用安全的 SOAP 訊息將分散式安全性延伸到 Windows 型網域之外。如需詳細資訊,請參閱 Windows Communication Foundation 安全性 (https://go.microsoft.com/fwlink/?LinkId=183157) (可能為英文網頁) 與 安全性架構 (https://go.microsoft.com/fwlink/?LinkId=183160) (可能為英文網頁)。

結合 IIS 與 .NET Framework 安全性

確保傳送至服務的訊息在傳送過程中不會被檢視或修改,對於應用程式的完整性而言非常重要。您可以使用加密與簽章來達到此一目的。但是,除非您也能確實驗證呼叫服務之用戶端應用程式的身分識別,否則仍無法確保訊息在傳送過程的安全性。使用 AppFabric 時,務必了解 IIS 與 WCF 如何共同運作以確保訊息的安全。

如需有關 Web 服務安全性機制與實作的詳細資訊,請參閱機制與實作:Web 服務安全性強化指南 (https://go.microsoft.com/fwlink/?LinkId=183161) (可能為英文網頁)。

AppFabric 中的 IIS 驗證

Windows 中的 WCF 傳輸安全性機制取決於所使用的繫結與後續傳輸。例如,使用 WSHttpBinding 類別時,傳輸是 HTTP,而用於確保傳輸安全的主要機制是 Secure Sockets Layer (SSL) over HTTP (通常簡稱為 HTTPS)。訊息安全性使用 WS-Security 規格來保護訊息等級之訊息的安全。它使用加強的 SOAP 傳訊功能來確保在 SOAP 訊息等級 (而非在傳輸等級) 的機密性、完整性與驗證。

主控的服務模式

主控的服務可以在兩種模式中執行:「混合傳輸模式」或「ASP.NET 相容模式」。模式是由應用程式等級的組態旗標 aspNetCompatibilityEnabled 所控制。您也可以在執行階段從靜態屬性 ServiceHostingEnvironment.AspNetCompatibilityEnabled 取得此旗標。aspNetCompatibilityEnabled 旗標預設是 false,因此除非您明確地變更此設定,否則服務會以「混合傳輸模式」執行。

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>
</system.serviceModel>

混合傳輸模式

在「混合傳輸模式」中,HTTP 模組會在管道的初期階段攔截要求:BeginRequest。當要求傳入時,HTTP 模組會將 HttpContext.Current 設定為 Null,並還原模擬的身分識別 (若執行緒是以模擬的身分識別執行)。因為系統會在早期階段攔截用戶端要求,所以系統會自動停用其他 HTTP 功能。因此當以「混合傳輸模式」執行時,服務無法存取下列 ASP.NET HTTP 特定功能:

  • HttpContext.Current。 在此模式中這一律是 Null。WCF 提供等同於此功能的功能:OperationContext.Current。

  • 檔案/URL 授權。 此傳輸層授權功能通常是透過 ASMX 服務之 Web.config 檔案的 <system.web/authorization> 區段啟用。在 WCF 的混合模式中,傳輸授權是停用的。執行檔案/URL 授權的唯一方式是使用 WCF 中實作的訊息層授權。

  • 模擬。 模擬可讓服務代表用戶端在伺服器上執行動作。ASP.NET 模擬功能通常是透過 ASMX 服務之 Web.config 檔案的 <system.web/identity> 區段啟用。在混合模式的 WCF 傳輸層中,不提供此功能。

  • 工作階段狀態。 混合模式不支援 ASP.NET 工作階段狀態。WCF 有自己可靠工作階段模擬能提供彈性的工作階段狀態管理。WCF 所面臨的最大問題是工作階段狀態在應用程式回收之後無法保留,而且不適用於 Web 伺服陣列。這是因為沒有任何機制可以在應用程式或處理序之間共用狀態,這與 (已停用的) ASP.NET 狀態服務不同。

  • 其他 HTTP 功能。 其他 HTTP 功能取決於 HttpContext.Current,而且在混合模式中不受支援。例如,您不能預期可從 ConfigurationManager.AppSettings 收到正確的結果。無法透過 <system.web/globalization> 使用全域功能。

在「混合傳輸模式」執行時,在對於 .NET Framework 服務的 WCF 呼叫中,會忽略 IIS 驗證。這使得您只能使用 WCF 安全性做為驗證與保護在 WCF 用戶端與 .NET Framework 服務間傳送之訊息的主要機制。在「混合傳輸模式」中,系統會以相同方式處理所有傳輸。服務可以有多個 WCF 端點,而且它們可以接聽相同或不同的傳輸 (例如,HTTP、net.tcp、net.pipe、net.msmq 等)。但是,在「混合傳輸模式」中執行的主控服務仍依賴 ASP.NET 與 IIS 提供主控環境、應用程式設定與部署。

ASP.NET 相容模式

若要在 WAS 主控的任何應用程式 (包含在 AppFabric 中主控的服務) 中使用 IIS 驗證,您必須使用「ASP 相容模式」與 WCF 傳輸安全性。只要使用「ASP 相容模式」,就能享有下列 IIS 安全性功能的優點:

  • 控制哪些 Windows 使用者 (以及哪些 Windows 群組的成員) 可以使用「IIS 管理員」連線到主控服務的網站或應用程式。

  • 將網站轉換為 IIS 虛擬目錄,然後使用兩種方式之一將安全性設定設定為虛擬目錄的實體路徑。傳遞驗證可告知 IIS 當存取虛擬目錄的實體路徑時,將已驗證之使用者的認證傳遞到 Windows 檔案系統。或者,您可以指定使用者身分識別以讓主控 .NET Framework 服務的處理序存取所指定實體路徑中的所有內容。

  • 選取適當的 IIS 驗證方法 (匿名、基本、表單、摘要、Windows 驗證,或 ASP表單模擬),以控制對於網站中的關聯服務之呼叫的安全性。

不論是否已啟用「ASP 相容模式」,您都可以享有下列 IIS 安全性功能的好處:

  • 設定 SSL 設定以使用 64 或 128 位元加密,並設定如何處理輸入要求的用戶端憑證。

  • 建立授權規則以允許或拒絕使用者存取網站或應用程式。

  • 使用 IIS 記錄功能來建立輸入要求的安全性稽核記錄檔。

  • 編輯連入監控與持續性資料庫之連接字串的安全性。

  • 管理用戶端對服務之呼叫的繫結設定。

  • 設定上層網站或所包含之服務應用程式的檔案等級執行權限 (完全控制、讀取與執行、列出檔案內容、寫入等)。

  • 將自訂應用程式的預設 NetworkService 身分識別變更為可用來執行該自訂應用程式集區的特定身分識別。若使用 SQL Server 上的整合式安全性,則這是用於呼叫 SQL Server 的身分識別。

如需詳細資訊,請參閱 WCF 服務與 ASP.NET (https://go.microsoft.com/fwlink/?LinkId=183163) (可能為英文網頁)。

驗證指導方針

為應用程式啟用 IIS 驗證:

  • 使用 ASP 相容模式

  • 使用支援傳輸安全性模式 (basicHttpBinding、wsHttpBinding 與 wsFederationHttpBinding) 的 HTTP 型 WCF 繫結

符合這些需求之後,請設定 IIS 與主控的 .NET Framework 服務,以使用相容的 IIS 與 WCF 安全性設定。設定應用程式的各個安全性設定,以符合其所有服務的安全性與繫結。指定不同的配置將導致 WCF 服務啟用錯誤。WCF 中的安全性模式 (在此案例中是「傳輸安全性模式」) 是在繫結元素中指定。它們必須支援驗證,因此請確定您選擇的 WCF 安全性設定與 IIS 設定相容。傳輸會對應至已針對繫結設定的 WCF 驗證模式。服務會透過其繫結組態指定驗證模式,而 WCF 用戶端組態檔的設定必須與該驗證模式一致。您必須將用戶端設定為提供適當形式的用戶端認證,以支援服務所提供的驗證配置。因為 AppFabric 不提供可用來進行此類型變更的 UI 元素,您必須手動在適當的 Web.config 檔案中進行變更。

security安全性 注意
wsDualHttpBinding 只支援訊息型安全性,因此若在您的服務中使用 IIS 驗證,將無法使用該功能。

  2011-12-05