共用方式為


當您連線到使用 ISA Server 2004 Service Pack 2 發佈的網站時,錯誤碼 403 或 500

本文提供當嘗試連線到使用 Microsoft Internet Security and Acceleration (ISA) Server 2004 Service Pack 2 (SP2) 發佈的網站時所發生錯誤的解決方案。

適用於: Windows Server 2003
原始 KB 編號: 912122

重要

本文包含的信息說明如何協助降低安全性設定,或如何關閉計算機上的安全性功能。 您可以進行這些變更,以解決特定問題。 在進行這些變更之前,建議您評估與在特定環境中實作此因應措施相關聯的風險。 如果您實作此因應措施,請採取任何適當的額外步驟來協助保護您的系統。

徵兆

當您嘗試連線到使用 Microsoft Internet Security and Acceleration (ISA) Server 2004 Service Pack 2 (SP2) 發佈的網站時,您會收到錯誤訊息。 如果 ISA Server Web 接聽程式已啟用基本身份驗證,您會收到下列錯誤訊息:

錯誤碼:403 禁止。
頁面必須透過安全通道檢視(安全套接字層 (SSL) 。 請連絡伺服器管理員。 (12211)

如果 ISA Server Web 接聽程式已啟用 RADIUS 驗證或Microsoft已啟用 Outlook Web Access Forms 型驗證(Cookie-auth),您會收到下列錯誤訊息:

錯誤碼:500 內部伺服器錯誤。
發生內部錯誤。 (1359)

原因

如果下列所有條件都成立,就會發生此問題:

  • ISA Server 2004 Web 接聽程式已啟用下列其中一個驗證方法:

    • 基本
    • RADIUS
    • Outlook Web Access Forms 架構
  • ISA Server 2004 Web 接聽程式已設定為接聽 HTTP 流量。

  • 針對 Web 接聽程式或 Web 發佈規則選取 [要求所有使用者進行驗證 ] 複選框會套用至預設 [所有使用者] 使用者集以外的使用者 集合。

  • 您可以使用 HTTP 連線到已發佈的網站,而不是使用 HTTPS。

發生此問題的原因是 ISA Server 2004 SP2 中包含的安全性修改。 當您使用 HTTP 對 HTTP 橋接時,如果 Web 接聽程式設定為要求下列一或多種認證,ISA Server 2004 SP2 就不會在外部 HTTP 連接埠上啟用流量:

  • 基本
  • RADIUS
  • Outlook Web Access Forms 架構

之所以發生這種行為,是因為這些類型的認證應該加密。 這些認證不應該透過 HTTP 以純文字傳送。

針對早於 ISA Server 2004 SP2 的 ISA Server 2004 版本,系統會提示您以純文本輸入認證。 如果您尚未實作某種形式的網路安全性,例如外部安全套接字層 (SSL) 加速器或加密通道,此行為可能會導致以純文本形式透過網路傳輸認證。 ISA 伺服器不提供這些形式的安全性。

ISA Server 2004 SP2 可防止您以純文本輸入認證。 當您嘗試這樣做時,您會收到錯誤訊息。

因應措施

警告

此因應措施可能會讓您的電腦或網路更容易受到惡意使用者或病毒等惡意軟體的攻擊。 我們不建議使用此因應措施,但會提供這項資訊,因此您可以自行自行實作此因應措施。 採用此因應措施需自行承擔風險。

若要解決此問題,請將 ISA Server 2004 SP2 設定為與舊版 ISA Server 2004 類似。

若要這樣做,請在您要變更組態的 ISA Server 2004 上執行下列腳本。 腳本會在 ISA Server 2004 陣列根目錄下設定的新廠商參數中,設定名為 AllowAskBasicAuthOverNonSecureConnection 的值。

Microsoft 提供的程式設計範例僅供說明之用,並不具任何明示或暗示的責任擔保。 這包括 (但不限於) 任何目的之適售性及適用性的暗示責任擔保。 本文假設您熟悉示範的程式設計語言,也熟悉用以建立和偵錯程序的工具。 Microsoft 技術支援工程師可以協助說明特定程序的功能,但不會修改這些範例以提供附加功能或建構程序來滿足您的特定需求。

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Copyright (c) Microsoft Corporation. All rights reserved.
' THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE
' RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE
' USER. USE AND REDISTRIBUTION OF THIS CODE, WITH OR WITHOUT MODIFICATION, IS
' HEREBY PERMITTED.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' This script adds a new VendorParametersSets under the array root.
' add a new VendorParametersSet and add a value name "AllowAskBasicAuthOverNonSecureConnection" set to 1.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub AddAllowAskBasicAuthOverNonSecureConnection()

    ' Create the root object.
    Dim root  ' The FPCLib.FPC root object
    Set root = CreateObject("FPC.Root")

    ' Declare the other objects that are required.
    Dim array       ' An FPCArray object
    Dim VendorSets  ' An FPCVendorParametersSets collection
    Dim VendorSet   ' An FPCVendorParametersSet object

    ' Get references to the array object
    ' and the network rules collection.
    Set array = root.GetContainingArray
    Set VendorSets = array.VendorParametersSets

    On Error Resume Next
    Set VendorSet = VendorSets.Item( "{143F5698-103B-12D4-FF34-1F34767DEabc}" )

    If Err.Number <> 0 Then
        Err.Clear

        ' Add the item
        Set VendorSet = VendorSets.Add( "{143F5698-103B-12D4-FF34-1F34767DEabc}" )
        CheckError
        WScript.Echo "New VendorSet added... " & VendorSet.Name

    Else
        WScript.Echo "Existing VendorSet found... value- " &  VendorSet.Value("AllowAskBasicAuthOverNonSecureConnection")
    End If

    if VendorSet.Value("AllowAskBasicAuthOverNonSecureConnection") <> 1 Then

        Err.Clear
        VendorSet.Value("AllowAskBasicAuthOverNonSecureConnection") = 1

        If Err.Number <> 0 Then
            CheckError
        Else
            VendorSets.Save false, true
            CheckError

            If Err.Number = 0 Then
                WScript.Echo "Done, saved!"
            End If
        End If
    Else
        WScript.Echo "Done, no change!"
    End If

End Sub

Sub CheckError()

    If Err.Number <> 0 Then
        WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description
        Err.Clear
    End If

End Sub

AddAllowAskBasicAuthOverNonSecureConnection