IIS-Digest lässt keine Pass-Though-Authentifizierung von Proxyanforderungen zu

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem die Digestauthentifizierung fehlschlägt, wenn ein Client eine Anforderung über einen Proxy an einen Standort sendet und Microsoft-Internetinformationsdienste (IIS) die Digestauthentifizierung verwendet.

Ursprüngliche Produktversion:   Internetinformationsdienste 8.5, 8.0
Ursprüngliche KB-Nummer:   3050055

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • IIS ist für die Verwendung der Digestauthentifizierung konfiguriert.
  • Der Server empfängt eine Anforderung mit dem HTTP-Header (HyperText Transfer Protocol). (Dies tritt auf, wenn die Clientanforderung über einen Proxy umgeleitet wird.)
  • Die angeforderte Ressource wird durch Digestauthentifizierung geschützt.
  • In der IIS-Pipeline wird eine untergeordnete Anforderung erstellt. Beispielsweise wird eine Anforderung für das Standarddokument eines Verzeichnisses gesendet, und die gesendete URL hat einen Schrägstrich (/) als letztes Zeichen.

In diesem Szenario schlägt die Digestauthentifizierung fehl, und der Server gibt eine 401-Antwort zurück.

Ursache

Aus Sicherheitsgründen können Anforderungen, die über einen Proxy weitergeleitet werden und für die eine untergeordnete Anforderung in der IIS-Pipeline erstellt wird, der Digestauthentifizierung nicht vertrauen.

Problemumgehung

Konfigurieren Sie die Website so, dass sie eine andere Art der Authentifizierung verwendet. Verwenden Sie beispielsweise Windows Authentifizierung oder Standardauthentifizierung über Tls (Transport Layer Security). Wenn dies nicht möglich ist, probieren Sie die folgenden Methoden aus:

  • Lassen Sie den Client eine Anforderungs-URL einschließlich des Dateinamens nach dem letzten / Zeichen verwenden.
  • Legen Sie den verwalteten Pipelinemodus des Anwendungspools auf "Klassisch" fest.
  • Verwenden Sie das Modul "URL Neu schreiben", um den URL-Pfad von / "/filename" neu zu schreiben.

Konfigurieren Sie das Modul wie folgt, um dieses Problem mithilfe des Moduls "URL Neu schreiben" zu umgehen:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="<a rule name>" enabled="false">
                <match url="(^$|.*/$)" />
                <action type="Rewrite" url="{R:0}<a file name that you want the users to access>" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>