如何使用 Windows 安全性保護 ASP.NET 應用程式

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

在此頁中

結論

ASP.NET 可以用於搭配 Microsoft 「 網際網路資訊服務 (IIS) 來驗證 Web 使用者根據他們 Microsoft Windows 2000 或 Windows Server 2003 的使用者帳戶認證。模擬 Web 使用者,或使用它自己的 Windows 身分識別存取資源,例如資料庫或檔案時,也可以設定 ASP.NET 執行引擎。


需求

您需要下列硬體、 軟體和網路基礎結構,以執行本文中的程序:
  • Windows 2000 Server Service Pack 2
  • IIS 5.0
  • IIS 6.0 的 Windows Server 2003
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual Studio.NET
您還需要下列的經驗:
  • 使用 Visual Basic.NET 的 ASP.NET 開發
  • IIS 管理
  • Windows 2000 使用者帳戶管理

如何開發網站

在此程序中,您將建立簡單的 ASP.NET Web 應用程式受到使用 Windows 驗證。
  1. 啟動 Visual 的 Studio.NET,然後建立新的 Visual Basic ASP.NET Web 應用程式,名為"WindowsSite]。
  2. 從工具箱拖曳到 WebForm1.aspx Web] 表單拖曳標籤控制項,並再將其 ID 屬性設定為 [authUserPrincipalLabel
  3. 從工具箱拖曳到 WebForm1.aspx Web] 表單拖曳第二個標籤控制項,並再將其 ID 屬性設定為 [aspPrincipalLabel
  4. 按兩下 WebForm1.aspx 若要檢視程式碼] 視窗,然後加入下列 Imports 陳述式,上述類別宣告:
    Imports System.Security
    						
    將下列程式碼新增至 Page_Load 事件程序:
    Dim authUserName As String
    Dim aspUserName As String
    authUserName = User.Identity.Name
    aspUserName = Principal.WindowsIdentity.GetCurrent.Name
    authUserPrincipalLabel.Text = "You are: " & authUserName
    aspPrincipalLabel.Text = "This page runs as: " & aspUserName
    					
  5. 檢視專案的 Web.config 檔,然後再找出 authentication 項目。確認模式屬性具有 Windows 的值。
  6. 建置並儲存專案。
  7. 執行該專案,並確認該網頁會顯示下列訊息:
    • 在 Windows 2000
      是:
      此網頁是以執行: DomainOrServer \ASPNET
    • 在 Windows Server 2003
      是:
      此網頁是以執行: DomainOrServer \NETWORK 服務
    附註因為您不已由 IIS 驗證,不會顯示您的使用者名稱 ; 仍然啟用匿名存取。
  8. 結束 [Internet Explorer 停止專案]。

如何停用匿名存取

在此程序會設定 IIS 以 WindowsSite 站台需要 Windows 整合式驗證。
  1. 最小化 Visual Studio,然後啟動 [網際網路服務管理員從系統管理工具] 程式群組。
  2. 展開您的伺服器和其預設的網站、 WindowsSite] 站台上按一下滑鼠右鍵,然後按一下 [內容]
  3. [目錄安全 設定] 索引標籤上 WindowsSite 屬性] 對話方塊中,按一下 [編輯] 按鈕 「 匿名存取及驗證控制] 區段中的]。
  4. 按一下以清除 [匿名存取] 核取方塊,確認 整合式 Windows 驗證] 核取方塊已選取,再按一下 [確定]
  5. 按一下 [確定] 關閉 WindowsSite 內容] 對話方塊。
  6. 切換回 Visual Studio,然後再執行該專案。 確認該網頁會顯示下列訊息:
    • 在 Windows 2000
      您是: Your Windows user name
      此網頁是以執行: DomainOrServer \ASPNET
    • 在 Windows Server 2003
      您是: Your Windows user name
      此網頁是以執行: DomainOrServer \NETWORK 服務
    附註您已透過您的 Windows 帳戶驗證。如果您有不被登入 Windows,會有被提示您輸入一個 Windows 使用者名稱和密碼。
  7. 結束 [Internet Explorer 停止專案]。

授權

在 ASP.NET 中,可能會允許應用程式的授權,當您進行其他設定在 Web.config 中使用的檔案。您可以允許特定使用者或特定群組 」 存取權這些額外的設定。下列範例說明這項功能。若要允許在 Windows NT 群組,稱為 「 管理員 」 中找到的所有使用者的存取,使用下列程式碼:
<configuration>
     <system.web>
       <authorization>
         <allow roles="domainname\Managers" />
         <deny users="*" />
       </authorization>
     </system.web>
   </configuration>
				
允許只有特定使用者存取,請使用下列程式碼:
<configuration>
     <system.web>
       <authorization>
         <allow users="domainname\user1,domainname\user2,domainname\user3" />
         <deny users="*" />
       </authorization>
     </system.web>
   </configuration>
				
附註 您當您使用逗號分隔的清單可以參考多個角色或使用者。


如何啟用模擬

此程序中您將會設定 WindowsSite 應用程式模擬正在存取的 Windows 使用者。
  1. 在 Visual Studio 檢視 WindowsSite 專案的 Web.config 檔。
  2. authentication 項目之後加入下列項目的項目:
    <identity impersonate = "true" />
    					
  3. 儲存 Web.config。
  4. 執行專案。確認該網頁會顯示下列訊息 (請注意 ASP.NET 執行引擎會使用您的 Windows 認證來存取您的名義上的資源):
    您是: Your Windows user name
    此網頁是以執行: Your Windows user name
  5. 結束 [Internet Explorer 停止專案]。

如何指派自訂主體

在此程序中,您將設定 WindowsSite 應用程式使用自訂的安全性主體:
  1. 從 [系統管理工具] 程式群組啟動 [電腦管理] 功能。建立新的 Windows 2000 使用者帳戶名為"WindowsSite 」 使用 「 密碼 」 的密碼 (請注意您的伺服器是否為網域控制站,然後使用 [Active Directory 使用者和電腦] 工具)。
  2. 按一下以清除必須要有權限,下列 「 知識庫 」 文件中所述: [使用者必須變更密碼,在下次登入時] 核取方塊。 附註 您選取的自訂主體
    317012在 ASP.NET 中的資訊: 處理程序和要求識別
  3. WindowsSite 帳戶已經建立時,關閉 [系統管理] 工具,用來建立它。
  4. 在 Visual Studio 檢視 WindowsSite 專案的 Web.config 檔。
  5. 編輯 identity 項目以讀取,如下所示:
    identity impersonate = "true"
           userName = "DomainOrServerName\WindowsSite"
           password = "password"/>
    
    其中 DomainOrServerName 是電腦的其中一個名稱或您 (在工作群組環境中) 的 Windows 2000 或 Windows Server 2003 網域 (在網域環境中)。
  6. 儲存 Web.config。
  7. 執行專案。確認該網頁會顯示下列訊息:
    您是: Your Windows user name
    此網頁是以執行: DomainOrServerName \WindowsSite
    附註Aspnet_wp.exe 會使用您指定在您的名義存取資源的 Windows 認證。
  8. 結束 [Internet Explorer 停止專案]。
附註模擬特定使用者的執行緒上之處理序識別必須具有 扮演作業系統的一部分] 權限。
  • 在 Windows 2000 預設,Aspnet_wp.exe 處理序執行名為 ASPNET 在電腦帳戶。
  • 在 Windows Server 2003 上根據預設值,Aspnet_wp.exe 處理序執行名為 NetworkService 在電腦帳戶。 不過,這個帳戶沒有正確的權限,來模擬特定使用者。如果您嘗試模擬特定使用者,您會收到錯誤訊息。
如果要解決這個問題而定,使用 [下列的其中一個方法]:
  • 授與的權限來 扮演作業系統的一部分 執行 ASPNET 帳戶 (最小權限的帳戶)。

    附註雖然您可以使用這個方法,如果要解決此問題,Microsoft 建議您不要這個方法。
  • 變更 Aspnet_wp.exe 處理序執行到系統帳戶 Machine.config 檔 <processmodel>組態一節中的帳戶。
如需有關 ASPNET 處理序的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/aa291339(VS.71).aspx

疑難排解

在 ASP.NET 網站中的 Windows 安全性可以進一步增強 (並變得複雜) 藉由使用 NTFS 檔案權限。如果您的 Windows 帳戶不具有讀取的 ASP.NET Web 網頁的權限,IIS 會提示您輸入替代的 Windows 認證。同樣地,如果 ASP.NET 網頁會嘗試存取 ASP.NET 執行引擎所使用的安全性主體不具有存取權的檔案,您會提示您輸入替代認證。NTFS 權限能夠有效地控制存取的 Web 站台的小節。

?考

如需有關如何在 ASP.NET 網站中使用 Windows 驗證的詳細資訊,請參閱 ASP.NET Web 應用程式安全性 > 主題,.NET Framework 文件中的]。

而且,請參閱 「 驗證在 ASP.NET:.NET 安全性指導原則 」 文件,在下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/ms978378.aspx

屬性

文章編號: 315736 - 上次校閱: 2007年12月3日 - 版次: 3.11
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.0
  • Microsoft Internet Information Services 5.0
  • Microsoft ASP.NET 1.1
  • Microsoft Internet Information Services 6.0
關鍵字:?
kbmt kbconfig kbhowtomaster kbinfo kbsecurity kbweb KB315736 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:315736
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