您目前已離線,請等候您的網際網路重新連線

SSL 終止和 ASP.NET

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:910444
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。
ASP.NET 支援語音資料行

SSL 終止和 ASP.NET

若要自訂您的需要此資料行的 我們想要邀請您送出您的想法,有關您感興趣的主題,而且在將來知識庫文件和支援語音資料行,處理您想要查看的問題。您可以送出您的想法和使用 Ask For It 表單的意見反應。另外還有連結至表單底部的 這個資料行。
歡迎使用 ASP.NET 支援語音資料行!我的名稱是 Jerry Orman。我與 Microsoft 已經超過五年,花了大部分的焦點放在與 Web 相關的技術,例如 Microsoft FrontPage 和 Microsoft SharePoint 產品與技術我時間。我已經花了使用 Microsoft ASP.NET 支援工程師為最後一年。這個月我將討論 SSL 終止和 ASP.NET。在特別我要專注於所產生的伺服器的組態問題。我們將在您的應用程式上看一下 SSL 終止和這個設定的一些副作用。

SSL 終止已的設定在其中執行您的程式碼的網頁伺服器會傳送,並透過 HTTP,接收流量,而且沒有一裝置您的 Web 伺服器和您的用戶端之間,會加密和解密資料。在這個設定用戶端會傳送和接收 HTTPS 流量。SSL 終止組態會類似下列:
用戶端 < — HTTPS — > SSL 裝置 < — HTTP — > Web 伺服器
現在讓我們移的 Microsoft ASP.NET 2.0,以這個設定中提出的超過兩個問題和解決該問題的一種方法。

問題 1

當您暫留在 ASP.NET 2.0 功能表 控制項中的功能表項目時您會得到下列的錯誤訊息:
此網頁包含安全和非安全性項目。您要顯示非安全性項目嗎?
應用程式應該是安全的、 您使用 SSL] 通訊協定,並且您尚未新增任何控制項要呈現的絕對路徑回到的 HTTP 位址。有什麼隨此郵件傳送?

嗯,問題是 功能表 控制項會發出一些 JavaScript 使用 iFrame 物件來建置飛出] 功能表。您必須提供框起始的 URL。若要避免非 SSL 案例對伺服器進行了不必要的來回,指令碼使用 有關: 空白 的 URL。不過,瀏覽器認為這是不安全的位址讓您取得上述的錯誤。如需有關這個問題,在 Microsoft Windows SharePoint 服務方面的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
837850按一下 Windows SharePoint 服務或 SharePoint 小組服務從 Microsoft 中的文件庫中的檔案總管檢視時,會收到 「 此頁面包含安全和非安全性項目 」 的訊息
我明確提到非 SSL 案例因為如果 Web 伺服器正在接收 HTTPS 流量,而非 SSL 裝置,Menu 控制項就會發出的 JavaScript 會加入至網頁的 HTTPS 地址設定 iFrame 物件的來源伺服器上的程式碼行。這會起始另一個要求,但是會防止錯誤訊息。如果您正在部署到此類型的環境,您可以強制額外的不想加入這段程式碼頁中有 Menu 控制項來顯示錯誤訊息 JavaScript
 <script runat="server">   protected override void Render(HtmlTextWriter writer)    {        Page.ClientScript.RegisterStartupScript(typeof(Page), "MenuHttpsWorkaround",         Menu1.ClientID + "_Data.iframeUrl='https://myserver/someblankpage.htm';", true);        base.Render(writer);   }</script> 
理想的情況下,您會有 MasterPage 類別或 使用者控制項 類別中的功能表,並可以新增這段程式碼只是一次。

問題 2

當您有 <forms>requireSSL 屬性時您可能會發現, 項目設為 true 時,伺服器會回應以重複的重新導向 FormsAuthentication 登入頁面。這是由於 FormsAuthenticationModule 方法處理 requireSSL 屬性的方式變更所造成。如果您將 requireSSL 屬性設定為 true 時,FormsAuthenticationModule 方法會建立有設定 安全 屬性的 Cookie。(這種行為是與.NET Framework 1.1 相同)。當您使用 [安全 的屬性時用戶端會將只傳遞 Cookie 給伺服器如果用戶端使用 SSL。這個部分是很棒,因為用戶端確實使用 SSL。讓我們假設您有匿名使用者無法存取的 SecurePage.aspx 網頁。 與 SSL 通訊協定和 requireSSL 屬性,您最後得到上 SecurePage.aspx 的初始要求下列的流量:
— > 用戶端對 SecurePage.aspx GET 要求。

<— 伺服器回應 HTTP 302 (重新導向) 與登入頁面。

— > 用戶端對 Login.aspx GET 要求。

<— 伺服器回應為 200 [確定]。 登入網頁呈現至用戶端。

— > 用戶端向 Login.aspx 提出 POST 要求。

<-伺服器會以 SecurePage.aspx 回應 302 (重新導向)。 設定 Cookie 標頭傳送與用戶端的 安全 屬性。

— > 用戶端向 SecurePage.aspx 提出 GET 要求。 Cookie 被傳遞,因為用戶端使用 SSL。

<-伺服器會回到登入網頁回應 302 (重新導向)。

您取得重新導向在最後一個要求中,因為 FormsAuthenticationModule 類別中的變更。ASP.NET 2.0,以判斷使用者是否透過非 SSL 要求傳遞安全的 Cookie 中加入額外的檢查。如果 FormsAuthentication.RequireSSL 屬性設定為 false,或如果 Request.IsSecure 屬性設定為 true,ASP.NET 2.0 會傳回 FormsAuthenticationTicket 類別。
  • 如果 requireSSL 屬性在組態檔中設定為 falseFormsAuthentication.RequireSSL 屬性設為 false
  • 如果 Web 伺服器接收到的 SSL 流量 Request.IsSecure 屬性設定為 true
因為在這種情況下 Web 伺服器不能接收 SSL 流量,且 requireSSL 屬性設定為 true,這兩個檢查傳回 false。如此一來 FormsAuthenticationTicket 類別並不會傳回,而且從 Request.Cookies 集合移除 Cookie。

此時因為伺服器還未驗證使用者的認證,讓使用者的要求是匿名。當要求通過 ASP.NET 管線,UrlAuthorizationModule 類別會檢查使用者是否具有存取網頁。因為匿名使用者並沒有存取 SecurePage.aspx 頁面,UrlAuthorizationModule 類別會傳回 401 錯誤訊息 (「 拒絕存取 」),這樣會使重新導向至登入網頁。

若要避免這種行為,您首先必須從 <forms>移除 requireSSL 屬性 在組態檔中的標記。然後您必須以程式設計方式設定 安全 屬性上 FormsAuthentication Cookie。下列程式碼會為您,FormsAuthentication Cookie 和 工作階段 Cookie
void Application_EndRequest(object sender, EventArgs e){     if (Response.Cookies.Count > 0)     {          foreach (string s in Response.Cookies.AllKeys)          {               if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")               {                    Response.Cookies[s].Secure = true;               }          }     }}
参考
如需有關 Menu 控制項的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 û 工 u 具 ã 網路 (MSDN) 網站]:如需 requireSSL 屬性 FormsAuthentication.RequireSSL 屬性的詳細資訊,請造訪下列 MSDN 網站:如需 IsSecure 屬性 HttpRequest.IsSecureConnection 屬性的詳細資訊,請造訪下列 MSDN 網站:如需有關 FormsAuthenticationModule 類別的詳細資訊,請造訪下列 MSDN 網站:如需有關 UrlAuthorizationModule 類別的詳細資訊,請造訪下列 MSDN 網站:

我希望您找到這項資訊很有幫助您正在使用 SSL 終止和 Microsoft ASP.NET 時。 請記住支援語音資料行是為您!如往常請隨意送出您想要在將來解決資料行的主題或使用 Ask For It 表單的知識庫中的想法。

警告:本文為自動翻譯

內容

文章識別碼:910444 - 最後檢閱時間:11/22/2007 03:46:24 - 修訂: 1.3

Microsoft ASP.NET 2.0

  • kbmt kbhowto kbasp KB910444 KbMtzh
意見反應
"76500"; var Ctrl = ""; document.write("