熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

寄宿多個Web 站點和 ASP.NET 應用程序

2013-11-13 09:58:22  來源: .NET編程 

  目標
  簡介
  Windows 上的 ASPNET 體系結構
  Windows Server 上的 ASPNET 體系結構
  用標識隔離應用程序
  用應用程序池隔離應用程序
  用代碼訪問安全隔離應用程序
  窗體身份驗證的問題
  UNC 共享寄宿
  小結
  
  簡介
  在共享宿主場景中確保應用程序不會對其他應用程序的操作和安全產生負面影響是非常重要的
  
  獲得應用程序獨立有許多方式可用的選擇因 Web 服務器上運行的 NET Framework 的版本和操作系統的版本的不同而不同
  
  如果運行的是 NET Framework 的 版本可以使用代碼訪問安全提供的資源約束模型提供一層應用程序獨立這種應用程序獨立是通過限制應用程序訪問不同類型的資源(如文件系統注冊表事件日志Active Directory數據庫網絡資源等等)而實現的
  
  Windows Server 通過 Internet 信息服務 (IIS ) 應用程序池提供了進程獨立可以使多個應用程序運行在不同的 IIS 輔助進程實例中進程獨立在 Windows 上是不可能的因為所有 Web 應用程序都運行在單獨的 ASPNET 輔助進程實例中而應用程序域提供了獨立性
  
  表 總結了 Windows 和 Windows Server 上應用程序獨立的各種選擇
   
  運行著 NET Framework 版的 Windows Server 是寄宿多個 ASPNET 應用程序的推薦平台因為它支持進程獨立並為應用程序獨立提供了最大范圍的選擇
  
  Windows 上的 ASPNET 體系結構
  在 Windows 多個 Web 應用程序運行在一個 ASPNET 輔助進程 (Aspnet_wpexe) 實例中每個應用程序都駐留在自己的應用程序域中為托管代碼提供了一定程度的獨立性Windows /IIS 體系結構如圖 所示
   
  圖 帶有 IIS 的 Windows 上的 ASPNET 體系結構
  
  表 總結了圖 中所描述的體系結構的組成部分
   
  Windows Server 上的 ASPNET 體系結構
  在 Windows Server 體系結構有所改變因為 IIS 允許多個進程用於寄宿不同的 Web 應用程序此體系結構如圖 所示
  
  注 IIS 支持向後兼容模式從而能夠支持 IIS ASPNET 輔助進程模型
   
  圖 帶有 IIS 的 Windows Server 上的 ASPNET 體系結構
  
  與 Windows 下的 ASPNET 體系結構相比Windows Server 中的主要區別在於可以用不同的 IIS 輔助進程實例 (Wwpexe) 寄宿 Web 應用程序默認時這些應用程序是使用 NT Authority\NetworkService 帳戶運行的這是一個最低特權本地帳戶它用作跨網絡的計算機帳戶運行在網絡服務帳戶環境下的 Web 應用程序需要給遠程服務器提供計算機的憑據以進行身份驗證
  
  為網絡服務配置 ACL
  為網絡服務帳戶配置訪問控制列表 (ACL) 的過程對於本地和遠程機器而言是不同的如果要授予本地機器上的網絡服務帳戶訪問權限需要將網絡服務帳戶添加到 ACL 中如果要授予遠程機器上的網絡服務帳戶訪問權限需要將 DomainName\MachineName$ 帳戶添加到 ACL 中
  
  注 不要把網絡服務帳戶與內置的網絡組搞混淆了後者包括的是跨網絡進行身份驗證的用戶
  
  表 總結了圖 中所描述的體系結構的主要組成部分
   
  用標識隔離應用程序
  從操作系統標識的觀點來看可以通過控制用來運行每個應用程序的帳戶標識隔離 ASPNET Web應用程序如果每個應用程序使用不同的固定帳戶標識就可以分別授權和審核每個應用程序
  
  注 如果要寄宿使用 NET Framework 版構建的 ASPNET Web應用程序進程帳戶需要適當的對當前文件系統驅動器根的訪問權限有關更多信息請參閱 Microsoft 知識庫文章 FIX:Failed to Start Monitoring Directory Changes Error Message When You Browse to an ASPNET Page
  
  如果共享 Web 服務器上每個應用程序要想都使用不同的固定標識可以采用兩種方式
  
  匿名帳戶模擬
  
  固定標識模擬
  
  匿名帳戶模擬
  
  通過匿名帳戶模擬應用程序可以模擬 IIS 指定並為應用程序的虛擬目錄配置的匿名帳戶如果您的應用程序要獨立於 IIS 對用戶進行身份驗證(如通過使用窗體或者 Microsoft Passport 身份驗證)就可以使用此方式在這些情況下可以通過使用固定的匿名帳戶隔離應用程序一旦調用方通過了身份驗證角色也經過了檢查就可以將可信服務器模型用於下游的資源訪問其中已配置的匿名帳戶提供了可信的標識
  
  為了支持這一方式IIS 中的應用程序虛擬目錄必須支持匿名訪問必須為每個應用程序配置不同的匿名帳戶應用程序然後必須配置為模擬這種方式如圖 所示本地和遠程資源訪問假設使用模擬的匿名帳戶的安全上下文
   
  圖 用於每個應用程序的多個匿名帳戶
  
  為了使用多個匿名帳戶進行資源訪問
  此過程敘fsecmodgif述了如何使用多個匿名帳戶(每個 Web 應用程序一個)進行資源訪問以支持單獨的應用程序授權和審核
  
   創建新的匿名用戶帳戶每個應用程序一個
  
  有關創建匿名用戶帳戶的更多信息請參閱保護 Web 服務器的安全單元中的帳戶部分
  
  如果需要使用匿名帳戶訪問遠程資源要麼使用一個最低特權域帳戶要麼使用本地帳戶在遠程服務器上使用匹配的用戶名和密碼創建一個重復的本地帳戶
  
   使用 標記在 nfig 中配置每個 Web 應用程序為模擬
  
  
  
  
  
  
  
  allowOverride=false 設置防止了單個的應用程序改寫 nfig 文件中的這一設置有關 元素的更多信息請參閱保護 ASPNET 應用程序的安全單元中的nfig 和 nfig 詳解部分
  
   使用 Internet 服務管理器配置每個應用程序的虛擬目錄以使用不同的匿名用戶帳戶
  
   從管理工具程序組啟動 Internet 服務管理器
  
   選擇應用程序的應用程序目錄鼠標右鍵單擊然後單擊 Properties
  
   單擊 Security 選項卡然後單擊 Edit 按鈕
  
   確保選擇了 Anonymous access然後單擊 Edit
  
   輸入已創建的匿名帳戶的用戶名或者單擊 Browse從列表中選擇用戶名
  
   如果想使用帳戶訪問遠程資源請清除匿名帳戶的 Allow IIS to Control Password 復選框
  
  如果選擇了 Allow IIS to Control Password使用指定匿名帳戶創建的登錄會話的網絡憑據將為 NULL而且不能用於訪問必需進行身份驗證的網絡資源如果清除了這一復選框登錄會話將是一個需要網絡憑據的交互式登錄會話但是如果帳戶是機器本地帳戶則網絡上其他機器都無法對此帳戶進行身份驗證在此情況下應該在目標遠程服務器上創建一個重復帳戶
  
  注 所創建的登錄會話的類型是由 LogonMethod IIS 元數據庫設置控制的默認時是交互式登錄會話需要具有Allow Log on Locally用戶特權的帳戶
  
  IIS 上沒有 Allow IIS to Control Password 選項IIS 將默認的 LogonMethod 設置為 Network Cleartext這要求帳戶有Access this computer from the network用戶特權這使帳戶由網絡服務器進行身份驗證
  
   為每個帳戶配置 NTFS 權限以確保每個帳戶都有只訪問適當的文件系統文件和文件夾的權限而不能訪問關鍵的資源(如操作系統工具)
  
  有關為匿名帳戶配置 NTFS 權限的更多信息請參閱單元保護 Web 服務器的安全
  
  注 如果運行 IISLockdown 向導它將創建一個 Web 匿名用戶組該組的成員將被拒絕訪問系統目錄和工具
  
  固定標識模擬
  如果需要 IIS 為應用程序對用戶進行身份驗證(例如通過使用集成 Windows 身份驗證或者證書身份驗證)可以使用一個固定模擬標識來執行 ASPNET 應用程序此場景如圖 所示
  
  圖 應用程序模擬一個固定帳戶並使用它訪問資源
  
  可以配置單獨的 ASPNET 應用程序模擬一個固定帳戶這種配置的好處在於它可以用於任何 IIS 身份驗證方法而且無需 IIS 匿名身份驗證 From:http://tw.wingwit.com/Article/program/net/201311/12152.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.