Uneingeschränkte Kerberos-Doppelhops-Authentifizierung mit Microsoft Edge (Chromium)

Gilt für:   Internetinformationsdienste

Einführung

Das Einrichten der Windows-Authentifizierung basierend auf dem Kerberos-Authentifizierungsprotokoll kann ein komplexes Unterfangen sein, insbesondere bei Szenarien wie der Delegierung der Identität von einem Front-End-Standort zu einem Back-End-Dienst im Kontext von IIS und ASP.NET. Führen Sie die Schritte dieses Artikels aus, um die Delegierung von Authentifizierungstickets einzurichten und Dienste mit einem modernen Browser wie Microsoft Edge Version 87 oder höher zu verwenden.

In diesem Artikel wird davon ausgegangen, dass Sie eine Architektur einrichten, die der architektur ähnlich ist, die im folgenden Diagramm dargestellt ist:

Diagramm, das die Architektur der Windows-Authentifizierung basierend auf dem Kerberos-Authentifizierungsprotokoll zeigt.

  • Der Workstation-Client1-Computer ist Teil desselben Active Directory wie der primäre Webserver, der als Primary-IIS-SRV bezeichnet wird, und dem Back-End-Webserver namens Back-End-Web-SRV.
  • Benutzer des Computers Workstation-Client1 melden sich mit dem Windows Active Directory-Konto am Computer an.
  • Anschließend starten sie einen Browser (Microsoft Edge), navigieren zu einer Website auf dem Webserver, bei der es sich um den Aliasnamen handelt, der für Primary-IIS-SRV verwendet wird, und authentifizieren sich über integrierte Windows-Authentifizierung mit Kerberos.
  • Die Website, die sich auf Web-Server befindet, führt HTTP-Aufrufe mithilfe der Anmeldeinformationen des authentifizierten Benutzers aus, um API-Server (der Alias für Back-End-Web-SRV) zum Abrufen von Anwendungsdaten im Namen von Benutzern mithilfe der Kerberos-Anmeldeinformationsdelegierung zu verwenden.

Die folgenden Schritte helfen Ihnen bei der Problembehandlung in diesem Szenario: Das Setup funktioniert mit Internet Explorer, aber wenn Benutzer Microsoft Edge einführen, können sie das Feature zur Delegierung von Anmeldeinformationen nicht mehr verwenden. Informationen zur Verwendung der Kerberos-Anmeldeinformationsdelegierung finden Sie zuerst unter Problembehandlung bei Kerberos-Fehlern in Internet Explorer .

Eingeschränkte oder uneingeschränkte Delegierung

Im obigen Szenario ermöglichen beide Konfigurationen Benutzern, Anmeldeinformationen aus ihrer Benutzersitzung auf Computer workstation-Client1 an den Back-End-API-Server zu delegieren, während die Verbindung über den Front-End-Webserver hergestellt wird.

In einer uneingeschränkten Kerberos-Delegierungskonfiguration wird die Anwendungspoolidentität auf Web-Server ausgeführt und in Active Directory so konfiguriert, dass sie für die Delegierung an einen beliebigen Dienst vertrauenswürdig ist. Das Konto des Anwendungspools, das auf Web-Server ausgeführt wird, kann die Anmeldeinformationen authentifizierter Benutzer der auf diesem Server gehosteten Website an jeden anderen Dienst im Active Directory delegieren. Beispielsweise ein SMTP-Server, ein Dateiserver, ein Datenbankserver, ein anderer Webserver usw. Dies wird als uneingeschränkte Delegierung bezeichnet, da das Anwendungspoolkonto über die Berechtigung zum Delegieren von Anmeldeinformationen an einen beliebigen Dienst verfügt, den es kontaktiert.

In einer eingeschränkten Delegierungskonfiguration kann das Active Directory-Konto, das als Anwendungspoolidentität verwendet wird, die Anmeldeinformationen authentifizierter Benutzer nur an eine Liste von Diensten delegieren, die zum Delegieren autorisiert wurden. Wenn die Webanwendung, die sich auf dem Server mit dem Namen Web-Server befindet, auch eine Datenbank kontaktieren und sich im Namen des Benutzers authentifizieren muss, muss dieser Dienstprinzipalname (Service Principal Name, SPN) der Liste der autorisierten Dienste hinzugefügt werden.

Eingeschränkte Delegierung ist sicherer als uneingeschränkte Delegierung, basierend auf dem Prinzip der geringsten Rechte. Einer Anwendung werden die Rechte gewährt, die sie benötigt, um zu funktionieren, und nichts mehr, während eine uneingeschränkte Delegierung es einer Anwendung ermöglicht, Ressourcen zu kontaktieren, die sie nicht im Namen des Benutzers kontaktieren sollte.

Wie kann ich feststellen, ob das Kerberos-Ticket, das der Kunde erhält, an die Web-Server eingeschränkte oder uneingeschränkte Delegierung verwendet?

Verwenden Sie das klist-Befehlstool, das in Windows vorhanden ist, um den Cache von Kerberos-Tickets vom Clientcomputer auflisten (Workstation-Client1 im obigen Diagramm). Suchen Sie nach einem Ticket mit dem Namen HTTP/<Name of Web-Server>. Hinweis: <Name of Web-Server> Ist der SPN des Diensts, den Sie über Kerberos kontaktieren und authentifizieren möchten. Das Ticket enthält auch einige Flaggen. Zwei von ihnen sind von Interesse: forwardable und ok_as_delegate.

  • Das erste Kennzeichen gibt an, forwardabledass der KDC (Schlüsselverteilungscenter) bei Bedarf ein neues Ticket mit einer neuen Netzwerkmaske ausstellen kann. Dies ermöglicht es einem Benutzer, sich bei einem Remotesystem anzumelden und für das Remotesystem ein neues Ticket im Namen des Benutzers zu erhalten, um sich bei einem anderen Back-End-System anzumelden, als ob sich der Benutzer lokal beim Remotesystem angemeldet hätte.

  • Das zweite Kennzeichen gibt an, dass das Dienstkonto des Diensts, ok_as_delegate bei dem der Benutzer versucht, sich zu authentifizieren (im Fall des obigen Diagramms das Anwendungspoolkonto des IIS-Anwendungspools, in dem die Webanwendung gehostet wird), für uneingeschränkte Delegierung vertrauenswürdig ist.

Wenn diese Dienste eine uneingeschränkte Delegierung verwenden, enthalten die Tickets auf dem Clientcomputer die ok_as_delegate Und-Kennzeichen forwardable . In den meisten Fällen, wenn eingeschränkte Delegierung konfiguriert ist, enthalten die Tickets nicht die ok_as_delegate Kennzeichnung, sondern die forwardable Kennzeichnung.

Warum funktioniert die uneingeschränkte Delegierung in Internet Explorer und nicht in Microsoft Edge?

Wenn versucht wird, sich mit kerberosbasierter Authentifizierung bei einer Website zu authentifizieren, ruft der Browser eine Windows-API auf, um den Authentifizierungskontext einzurichten. Die betreffende API ist InitializeSecurityContext. Diese API empfängt möglicherweise eine Reihe von Flags, um anzugeben, ob der Browser das delegatable Ticket zulässt, das der Benutzer erhalten hat. Das Ticket wird gekennzeichnet delegatable , da der Dienst, für den sich der Benutzer authentifizieren möchte, das Recht hat, Anmeldeinformationen uneingeschränkt zu delegieren. Dies bedeutet jedoch nicht, dass die Anwendung, die versucht, sich zu authentifizieren (in diesem Fall der Browser), diese Kapazität verwenden sollte.

Standardmäßig übergibt Internet Explorer die Kennzeichnung an InitializeSecurityContext, die angibt, dass, wenn das Ticket delegiert werden kann, dies sein sollte. Microsoft Edge ab Version 87 übergibt das Kennzeichen nicht, InitializeSecurityContext nur weil das Ticket mit der ok_as_delegate Kennzeichnung gekennzeichnet ist. Es wird nicht empfohlen, uneingeschränkte Delegierungen in Anwendungen zu verwenden, da anwendungen dadurch mehr Berechtigungen als erforderlich gewährt werden. Anwendungen könnten die Identität des Benutzers an jeden anderen Dienst in der Domäne delegieren und als Benutzer authentifizieren, was für die meisten Anwendungen, die anmeldeinformationsdelegierung verwenden, nicht erforderlich ist. Anwendungen sollten nur die Dienste in der Liste kontaktieren, die beim Einrichten der eingeschränkten Delegierung angegeben wurden.

Standardmäßig arbeitet Microsoft Edge mit eingeschränkter Delegierung, bei der die IIS-Website, die auf Web-Server ausgeführt wird, nur das Recht hat, die back-End-API-Website zu kontaktieren, die auf API-Server gehostet wird, wie in der unten aufgeführten Konfiguration des Anwendungspool-Identitätskontos aus Active Directory gezeigt:

Screenshot der Konfiguration des Anwendungspoolidentitätskontos.

Aktivieren von Edge-Chromium zum Arbeiten mit uneingeschränkter Delegierung in Active Directory

Wenn Sie aus Kompatibilitätsgründen eine Anwendung mit uneingeschränkter Delegierung über Kerberos verwalten müssen, aktivieren Sie Microsoft Edge, um die Ticketsdelegierung zuzulassen. Die nachstehenden Schritte werden in den folgenden Abschnitten dieses Artikels ausführlich beschrieben:

  1. Installieren Sie die administrativen Vorlagen für Gruppenrichtlinie zentralen Speicher in Active Directory (falls nicht bereits vorhanden).
  2. Installieren Sie die administrativen Microsoft Edge-Vorlagen.
  3. Erstellen Sie ein neues Gruppenrichtlinie-Objekt.
  4. Bearbeiten Sie die Konfiguration der Gruppenrichtlinie, um eine uneingeschränkte Delegierung bei der Authentifizierung bei Servern zu ermöglichen.
  5. (Optional) Überprüfen Sie, ob Microsoft Edge die richtigen Delegierungskennzeichen verwendet.

Schritt 1: Installieren der administrativen Vorlagen für Active Directory

  1. Laden Sie die Vorlagen aus administrativen Vorlagen (.admx) ( für Windows Server 2019) herunter.

  2. Laden Sie das Installationsprogramm herunter, und extrahieren Sie den Inhalt in einen Ordner Ihrer Wahl. Sie können es einfach an den standardmäßig angegebenen Speicherort des Pakets extrahieren, d. h. C:\Program Files (x86)\Microsoft Gruppenrichtlinie\Windows 10 October 2018 Update (1809) v2\PolicyDefinitions.

  3. Nachdem das Paket entpackt wurde, suchen Sie den Ordner "Sysvol " auf Ihrem Domänencontroller. Der Pfad zum Ordner lautet "C:\Windows\SYSVOL\sysvol\". Innerhalb des Ordners Sysvol befindet sich ein Ordner mit demselben Namen wie Ihr Active Directory-Name (im Beispiel hier Oddessy.local). Navigieren Sie von dort zum Ordner "Richtlinien ". Wenn er nicht vorhanden ist, erstellen Sie einen Ordner namens "Richtliniendefinitionen ", wie unten gezeigt:

    Screenshot des Richtliniendefinitionsordners unter dem Ordner &quot;Richtlinien&quot;.

  4. Kopieren Sie den Inhalt des Ordners "PolicyDefinitions " (der aus dem Installationsprogramm extrahiert wurde) in den PolicyDefinitions-Ordner , den Sie in Ihrer Domäne im Ordner "sysvol " auf dem Domänencontroller erstellt haben.

    Hinweis

    Die vom Installationsprogramm extrahierten Dateien enthalten auch lokalisierten Inhalt. Um Platz zu sparen, übertragen Sie die lokalisierten Dateien nur für die gewünschten Sprachen. Der Ordner mit dem Namen "fr-FR" enthält z. B. alle lokalisierten Inhalte in Französisch.

  5. Überprüfen Sie nach Abschluss der Übertragung, ob die Vorlagen in Active Directory verfügbar sind. Öffnen Sie dazu das Gruppenrichtlinie Management-Snap-In der Microsoft Management Console (drücken Sie Windows+R, und geben Sie dann gpmc.msc ein, um zu starten). Suchen Sie innerhalb der Gruppenrichtlinie-Verwaltung ein Gruppenrichtlinienobjekt, und bearbeiten Sie es.

    Screenshot des Gruppenrichtlinienobjekts in Gruppenrichtlinie Verwaltungs-Editor.

    Wie im Screenshot oben gezeigt, befindet sich unter dem Knoten "Computerkonfiguration " ein Knoten "Richtlinien " und " Administrative Vorlagen ".

Schritt 2: Installieren der administrativen Microsoft Edge-Vorlagen

Möglicherweise verfügen Sie zunächst über die administrativen Richtlinienvorlagen auf dem Domänencontroller, sie müssen jedoch die Microsoft Edge-Richtliniendateien installieren, um Zugriff auf die Richtlinie zu erhalten, die für die Aktivierung der uneingeschränkten Delegierung mit Doppelhops über diesen Browser vorgesehen ist. Führen Sie die folgenden Schritte aus, um die Microsoft Edge-Richtliniendateien zu installieren:

  1. Wechseln Sie zur Microsoft Edge for Business-Downloadwebsite.

  2. Wählen Sie die Version aus, die Sie aus dem Kanal-/Versionsdropdown herunterladen möchten. Die neueste stabile Version wird empfohlen.

  3. Wählen Sie den gewünschten Build aus der Builddropdownliste und schließlich das Zielbetriebssystem aus dem Plattformdropdown aus. Nachdem die Auswahl getroffen wurde, werden zwei weitere Schaltflächen (eine Schaltfläche und ein Link) angezeigt.

    Screenshot der Seite &quot;Herunterladen und Bereitstellen von Microsoft Edge for Business&quot;.

  4. Klicken Sie auf "RICHTLINIENDATEIEN ABRUFEN ", und akzeptieren Sie den Lizenzvertrag, um die Datei mit dem Namen MicrosoftEdgePolicyTemplates.cab herunterzuladen. Diese Datei enthält die Richtliniendefinitionsdateien für Microsoft Edge.

  5. Doppelklicken Sie auf die Datei, um den Inhalt zu erkunden (ein ZIP-Archiv mit demselben Namen).

  6. Extrahieren Sie den Inhalt des ZIP-Archivs in einen Ordner auf Ihrem lokalen Datenträger. Der extrahierte Inhalt enthält einen Ordner namens Windows , in dem Sie einen Unterordner namens Admx finden. Dies enthält die administrativen Vorlagen sowie deren lokalisierte Versionen (Sie sollten sie in einer anderen Sprache als Englisch benötigen).

    Screenshot des Ordners &quot;admx&quot;.

  7. Übertragen Sie die ADMX-Dateien innerhalb desselben Ordners unter dem Sysvol-Verzeichnis , in das die administrativen Vorlagen aus dem vorherigen Verzeichnis übertragen wurden (im obigen Beispiel: C:\Windows\SYSVOL\sysvol\odessy.local\Policies\PolicyDefinitions).

  8. Öffnen Sie den Active Directory-Gruppenrichtlinie-Editor, und wählen Sie ein vorhandenes Gruppenrichtlinienobjekt zur Bearbeitung aus, um das Vorhandensein der neu übertragenen Microsoft Edge-Vorlagen zu überprüfen. Diese befinden sich in einem Ordner namens Microsoft Edge , der sich unterhalb des Ordners "Administrative Vorlagen" in der Strukturansicht befindet:

    Screenshot des Microsoft Edge-Elements im Gruppenrichtlinie-Verwaltungs-Editor.

Schritt 3: Erstellen eines neuen Gruppenrichtlinie-Objekts

Hier erfahren Sie, wie Sie ein neues Gruppenrichtlinie-Objekt mithilfe des Active Directory Gruppenrichtlinie Manager-MMC-Snap-Ins erstellen:

  1. Drücken Sie Windows+R, um das Menü " Ausführen " auf Ihrem Domänencontroller zu öffnen.
  2. Geben Sie "Gpmc.msc" ein, um die Microsoft Management Console zu öffnen und das Active Directory Gruppenrichtlinie Manager-Snap-In zu laden.
  3. Suchen Sie den Knoten Gruppenrichtlinie Objekte in der Strukturansicht der Konsole, und klicken Sie mit der rechten Maustaste auf den Knoten, um das Kontextmenü zu öffnen.
  4. Wählen Sie das Menüelement "Neu ", geben Sie den Namen der Gruppenrichtlinie ein, die Sie erstellen möchten, und klicken Sie dann auf "OK".

Screenshot des neuen Menüelements in Gruppenrichtlinie Verwaltungs-Editor.

Schritt 4: Bearbeiten der Konfiguration der Gruppenrichtlinie, um eine uneingeschränkte Delegierung bei der Authentifizierung bei Servern zu ermöglichen

Der letzte Schritt besteht darin, die Richtlinie zu aktivieren, die es dem Microsoft Edge-Browser ermöglicht, das ok_as_delegate Kennzeichen an den InitializeSecurityContext API-Aufruf zu übergeben, wenn die Authentifizierung mit Kerberos auf einer Windows Integrated-aktivierten Website durchgeführt wird. Wenn Sie nicht wissen, ob Ihr Microsoft Edge-Browser Kerberos zur Authentifizierung verwendet (und nicht NTLM), lesen Sie die Problembehandlung bei Kerberos-Fehlern in Internet Explorer.

Wählen Sie im Active Directory-Gruppenrichtlinie-Editor das Gruppenrichtlinienobjekt aus, das auf die Computer in Ihrem Active Directory angewendet wird, von dem aus Sie Endbenutzern die Authentifizierung über Kerberos-Authentifizierung ermöglichen und ihre Anmeldeinformationen durch uneingeschränkte Delegierung an Back-End-Dienste delegieren lassen möchten. Die Richtlinie, die die uneingeschränkte Delegierung von Microsoft Edge ermöglicht, befindet sich im Ordner "HTTP-Authentifizierung " der Microsoft Edge-Vorlagen , wie unten gezeigt:

Screenshot des H T T P-Authentifizierungsordners im Gruppenrichtlinie-Verwaltungs-Editor.

Verwenden Sie diese Einstellung, um eine Liste der Server zu konfigurieren, für die die Delegierung von Kerberos-Tickets zulässig ist.

Hinweis

Eine Liste der Server muss bereitgestellt werden. In dem am Anfang dieses Artikels verwendeten Beispiel müssten Sie der Liste den Web-Server Servernamen hinzufügen, damit die Front-End-Web-Server-Webanwendung Anmeldeinformationen an den Back-End-API-Server delegieren kann.

Screenshot einer Liste der Server.

Nachdem das neu bearbeitete Gruppenrichtlinienobjekt auf die Clientcomputer innerhalb der Domäne angewendet wurde, wechseln Sie zur Seite "Testauthentifizierung " in "Problembehandlung bei Kerberos-Fehlern in Internet Explorer ", und laden Sie sie von ASP.NET Seite "Authentifizierungstest" herunter. Es wird eine ImpersonationLevel-Einstellung der Stellvertretung anstelle der Identitätswechsel signalisieren, dass die Delegierung von Anmeldeinformationen jetzt zulässig ist.

Screenshot der Einstellungsseite &quot;ImpersonationLevel&quot;.

Um zu testen, ob die Richtlinie auf der Clientarbeitsstation ordnungsgemäß angewendet wurde, öffnen Sie eine neue Microsoft Edge-Registerkarte, und geben Sie edge://policy ein.

Screenshot der Seite edge://policy.

Die AuthNegotiateDelegateAllowlist Richtlinie sollte so festgelegt werden, dass die Werte der Servernamen angegeben werden, für die Microsoft Edge die Delegierung von Kerberos-Tickets ausführen darf. Wenn die Richtlinie nicht in der Liste angezeigt wird, wurde sie weder bereitgestellt noch auf den falschen Computern bereitgestellt.

Schritt 5 (Optional): Überprüfen Sie, ob Microsoft Edge die richtigen Delegierungskennzeichnungen verwendet.

Hier ist der Schritt zur Problembehandlung/optionalen Überprüfung.

Nachdem die Richtlinie konfiguriert und bereitgestellt wurde, müssen die folgenden Schritte ausgeführt werden, um zu überprüfen, ob Microsoft Edge die richtigen Delegierungskennzeichnungen an IntializeSecurityContextübergibt. Die Schritte verwenden Tools, die bereits in Microsoft Edge integriert sind oder als Onlinedienste verfügbar sind.

  1. Verwenden Sie das in Microsoft Edge verfügbare Protokollierungsfeature, um zu protokollieren, was der Browser beim Anfordern einer Website tut. So aktivieren Sie die Protokollierung:

    1. Öffnen Sie ein neues Microsoft Edge-Fenster, und geben Sie edge://net-export/ ein.

    2. Verwenden Sie bei der Ablaufverfolgung die Option "Cookies und Anmeldeinformationen einschließen ". Ohne diese Option werden Daten auf Authentifizierungsablaufverfolgungsebene weggelassen.

      Screenshot der Seite edge://net-export/.

    3. Klicken Sie auf die Schaltfläche " Protokollierung auf Datenträger starten ", und geben Sie den Dateinamen an, unter dem Sie die Ablaufverfolgung speichern möchten.

    4. Öffnen Sie eine weitere Microsoft Edge-Registerkarte, navigieren Sie zu der Website, für die Sie integrierte Windows-Authentifizierung mit Microsoft Edge ausführen möchten.

    5. Nachdem Sie versucht haben, sich zu authentifizieren, wechseln Sie zurück zur vorherigen Registerkarte, auf der die Ablaufverfolgung aktiviert war, und klicken Sie auf die Schaltfläche " Protokollierung beenden ". Die Ablaufverfolgungsschnittstelle gibt an, in welche Datei die Ablaufverfolgung geschrieben wurde.

  2. Verwenden Sie die JSON-Datei, die die Ablaufverfolgung enthält, um zu sehen, welche Parameter der Browser bei dem Versuch, sich zu authentifizieren, an die InitializeSecurityContext Funktion übergeben hat. Verwenden Sie die netlog_viewer, um die Ablaufverfolgung zu analysieren.

  3. Innerhalb der analysierten Ablaufverfolgung befindet sich ein Ereignisprotokoll, das wie folgt aussieht:

    t=3076 [st=12]       +AUTH_LIBRARY_INIT_SEC_CTX  [dt=3]
                          --> flags = {"delegated":false,"mutual":false,"value":"0x00000000"}
                          --> spn = "HTTP/web-server.odessy.local"
    

    Dieses Protokoll zeigt Folgendes:

    • AUTH_LIBRARY_INIT_SEC_CTX bedeutet, dass der Browser die InitializeSecurityContext Funktion aufruft.
    • "delegated":false bedeutet, dass das Ticket nicht delegiert werden sollte, auch wenn das Ticket als delegatablegekennzeichnet ist.
    • "mutual":false bedeutet, dass der Client (Browser) nicht erfordert, dass der Server sich auch beim Client authentifiziert und seine Identität nachweist. Nur der Client sollte sich beim Server authentifizieren, um seine Identität nachzuweisen.
    • HTTP/web-server.odessy.local ist der SPN, der vom Browser beim Authentifizierungsaufruf verwendet wird.