如何為委派案例設定 ASP.NET 應用程式

文章翻譯 文章翻譯
文章編號: 810572 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您,如何為 ASP.NET 應用程式的委派,設定網際網路資訊服務 (IIS,Internet Information Services) 和 Active Directory。委派是模擬之後的步驟。委派可以讓您代表用戶端存取遠端資源,而不只是存取本機的資源。本文將告訴您,在委派 ASP.NET 應用程式時必須採取的步驟。


委派需求

委派必須依賴「整合的 Windows 驗證」來存取資源。您可以委派帳戶的電腦數目並沒有限制,所以您必須逐一正確地加以設定。只有下列兩項條件都成立時,「整合的 Windows 驗證」才能運作:
  • 將您的網路設定成使用必須有 Active Directory 的 Kerberos 驗證。
  • 將網路上的電腦和帳戶設定成受信任可以執行委派。
如果這些條件不成立,您就無法使用「整合的 Windows 驗證」來存取遠端資源上的資料。因為「整合的 Windows 驗證」只會讓您存取 IIS 伺服器,但無法存取其他為 Windows 驗證設定、且由 IIS 伺服器遠端存取的資源。



Kerberos 驗證方式會驗證伺服器與用戶端,而 Windows NT 挑戰/回應 (NTLM) 只會驗證用戶端。比 Windows 2000 更早期的作業系統不支援 Kerberos 驗證。您必須使用 IIS 5.0 或更新的版本才能使用 Kerberos 驗證。因此,您必須在使用 Kerberos 委派的所有電腦上,執行 Windows 2000 或更新的作業系統。此外,您必須將所有電腦置於相同的 Active Directory 樹系中。只有 Microsoft Internet Explorer 5.0 和更新的版本才支援 Kerberos。 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
217098 Basic Overview of Kerberos User Authentication Protocol in Windows 2000


為委派設定 Internet Explorer

當您使用 Internet Explorer 5.0 或更新的版本時,可以設定 Internet Explorer 以執行 ASP.NET - IIS 委派。如果要執行這項操作,請依照下列步驟執行:
  1. 啟動 Internet Explorer。按一下功能表列上的 [工具],然後按一下 [網際網路選項]
  2. 按一下 [進階] 索引標籤,然後按一下以選取 [啟用整合的 Windows 驗證 (需要重新啟動)] 核取方塊。

    這個設定值會允許 Internet Explorer 回應 Negotiate 挑戰,然後執行 Kerberos 驗證。由於這項功能必須在 Windows 2000 或更新的版本上才能發揮作用,因此如果 Internet Explorer 不是在 Windows 2000 或更新版本的作業系統上執行時,Internet Explorer 就不會回應 Negotiate 挑戰。即使您選取了 [啟用整合的 Windows 驗證 (需要重新啟動)] 核取方塊,Internet Explorer 還是會根據預設值使用 NTLM 驗證。

    警告 如果您使用「登錄編輯程式」或其他方法不當地修改登錄,可能會發生嚴重問題。這些問題可能會需要您重新安裝作業系統才能解決。Microsoft 不保證可以解決這些問題。請自行承擔修改登錄的一切風險。

  3. 注意 在執行 Microsoft Windows 2000 和更新版本的電腦上,系統管理員可以將下列登錄機碼的 [EnableNegotiate] REG_DWORD 項目值設定成 1,開啟「整合的 Windows 驗證」:
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    .
  4. 有一些問題可能會讓 Internet Explorer 用戶端上的 Kerberos 無法運作。 如需 Kerberos 驗證相關問題的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    321728 Internet Explorer Does Not Support Kerberos Authentication With Proxy Servers
    325608 Authentication delegation through Kerberos does not work in load-balanced architectures
    248350 Kerberos authentication fails after upgrading from IIS 4.0 to IIS 5.0
    264921 INFO:IIS 驗證瀏覽器用戶端的方式

為委派設定 IIS

如果要開啟 ASP.NET 應用程式的「整合的 Windows 驗證」和模擬,您必須設定「網際網路資訊服務」(IIS)。如果要設定 IIS 的「Windows 驗證」,請依照下列步驟執行:
  1. 按一下 [開始],按一下 [執行],輸入 inetmgr,然後按一下 [確定]
  2. 展開 [本機電腦],然後展開 [網站]
  3. 用滑鼠右鍵按一下 [預設的網站],然後按一下 [內容]
  4. 按一下 [目錄安全設定] 索引標籤,然後按一下 [匿名存取及驗證控制] 下的 [編輯]
  5. 按一下以選取 [整合式 Windows 驗證] 核取方塊,然後按一下以清除 [匿名存取][摘要式 Windows 網域伺服器驗證][基本驗證] 等核取方塊。

    注意 如果啟用了「匿名驗證」,即使您也有啟用其他方法,IIS 還是會首先嘗試使用「匿名驗證」。

    如果「匿名驗證」、「整合的 Windows 驗證」和「基本驗證」都選取了,則「整合的 Windows 驗證」將優先於「基本驗證」,最後才是「匿名驗證」。

為委派設定 ASP.NET

  1. 在「記事本」之類的文字編輯器中開啟 Web.config 檔。Web.config 檔位於 [Web Application] 資料夾。
  2. 在 Web.config 檔案中,從 <configuration> 區段找出下列資訊:
    <allow users="*" /> 
    <deny users="?" />
  3. 在 <System.web> 區段下,確認驗證元素是設定為 [Windows],如下所示:
    <authentication mode="Windows" />
  4. 在 <System.web> 區段下,加入下列模擬元素:
    <identity impersonate="true" />
  5. 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    306158 如何在 ASP.NET 應用程式中實作模擬
    317012 ASP.NET 中的處理序及要求識別
    315736 How To Secure an ASP.NET Application by Using Windows Security

為委派設定 Active Directory

所有電腦的委派都必須以委派憑證啟用。這可以在 Active Directory 的工具中設定。

如需詳細資訊,請造訪下列 Microsoft 網站:
允許電腦受信任可以執行委派 (英文)
http://technet2.microsoft.com/windowsserver/en/library/b207ee9c-a055-43f7-b9be-20599b694a311033.mspx
使用者和電腦帳戶 (英文)
http://technet2.microsoft.com/windowsserver/en/library/91a98c38-38c5-49dc-83bf-e69d8e1dbbfa1033.mspx
IIS 的核心處理程序 (即 InetInfo.exe) 是一項能夠在 LocalSystem 帳戶下執行的服務,而且會執行下列工作:
  • 接受用戶端要求
  • 模擬使用者
  • 執行適當的工作
  • 還原處理序識別。也就是 LocalSystem
如果您在非 LocalSystem 的帳戶下執行 InetInfo.exe,您必須確認該帳戶已被允許以代理人 (Delegate) 的身分執行。在這種情況下,請不要將電腦設定成可進行委派。

疑難排解

  1. 如果您在 URL 中用來呼叫 ASP.NET 頁面的 Web 伺服器名稱不是 IIS 電腦的 NetBIOS 名稱時,「整合式驗證」可能會失敗,並傳回錯誤 401.3。如果要解決此問題,請使用 SetSPN.exe 公用程式為電腦登錄新的「服務原則名稱」。 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    294382 Authentication may fail with "401.3" Error if Web site's "Host Header" differs from server's NetBIOS name
  2. Kerberos 無法在載入平衡的架構中運作,而 IIS 會回到 NTLM 驗證。因為您無法在委派中使用 NTLM,所以任何需要委派的應用程式或服務均無法正常地運作。 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    325608 Authentication delegation through Kerberos does not work in load-balanced architectures
  3. 如果要讓 Kerberos 正常地運作,您必須在所有的通訊上使用完整格式的網域名稱 (FQDN,Fully Qualified Domain Names)。
  4. 當您在 Windows 2000 用戶端上使用 Internet Explorer 時,如果您找到一個網站,它的主機標頭名稱與電腦的 NetBIOS 名稱不同時,「整合式驗證」可能會失敗,並傳回錯誤 401.3。請注意,使用 Windows NT 4 或 Windows 98 或 Windows 95 的 Internet Explorer 用戶端並不會失敗。此外,其他的驗證配置還是可以運作。
  5. 如果 Web 伺服器使用完整格式的網域名稱 (FQDN),您必須將這個網站加入 Internet Explorer 的內部網路網站清單中。如果要檢查 Web 伺服器是否使用完整格式的網域名稱,請依循下列步驟:
    1. 啟動 Internet Explorer。
    2. [工具] 功能表上,按一下 [網際網路選項],然後按一下 [安全性] 索引標籤。
    3. 按一下以選取 [近端內部網路]。按一下 [網站]
    4. 按一下 [進階],然後在 [將此網站加到該區域] 對話方塊中輸入網址。按一下 [新增],然後按一下 [確定]
  6. 如果 Internet Explorer 用戶端是設定為使用 Proxy 伺服器,您必須按一下以選取 [近端網址不使用 Proxy] 核取方塊。如果要檢查 Internet Explorer 用戶端是否設定為使用 Proxy 伺服器,請依循下列步驟:
    1. 啟動 Internet Explorer。
    2. [工具] 功能表上,請按一下 [網際網路選項],然後按一下 [連線] 索引標籤。
    3. 按一下 [區域網路設定]。在 Proxy 伺服器下,請檢查是否已選取 [近端網址不使用 Proxy] 核取方塊。
  7. 如果您想要從 ASP.NET 連線應用程式存取 SQL Server,則必須使用 TCP/IP。具名管道並不支援 Kerberos 委派。具名管道只使用 NTLM。如果要執行這項操作,請在連線字串中加入下列屬性:
    "Network Library =dbmssocn"
    "Network Library =dbmssocn"
    如果您不明確地設定網路程式庫,則 NTLM 會採用用戶端設定公用程式 (Cliconfg.exe) 的第一個程式庫設定。這項預設值就會從具名管道變更為 Microsoft Data Access Components (MDAC) 2.6 中的 TCP/IP。
    如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    315159 BUG:Named pipes do not work when worker process runs under ASPNET account
    176377 資訊:從 ASP 存取具有「整合安全性」的 SQL Server
    176379 HOWTO:IIS 及 SQL Server 以信任連線方式於不同的機器上運作
    247931 在 Active Server Pages 中連線至 SQL Server 的驗證方法

?考

如需有關如何設計更多安全的 Web 應用程式和委派案例的詳細資訊,請造訪下列 Microsoft Developer Network (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/aa302415.aspx
如需有關如何設計安全的 Web 應用程式的詳細資訊,請參考下列:
《Designing Secure Web-Based Applications》
Microsoft Press
Michael Howard、Marc Levy 和 Richard Waymire 合著
ISBN 0-7356-0995-0

屬性

文章編號: 810572 - 上次校閱: 2007年12月4日 - 版次: 8.4
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Services 6.0
關鍵字:?
kbauthentication kbwebforms kbdomain kbclient kbconfig kbwebserver kbhowtomaster kbhowto KB810572
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com