(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Integrierte Windows-Authentifizierung mit erweitertem Schutz

Erweiterungen wurden diesen Auswirkungen gemacht, wie die integrierte Windows-Authentifizierung durch HttpWebRequest, HttpListener, SmtpClient, SslStream, NegotiateStream und die verknüpften Klassen in System.Net und die verknüpften Namespaces behandelt wird. Unterstützung wurde hinzugefügt, damit erweiterter Schutz die Sicherheit erhöhen.

Diese Änderungen können Anwendungen auswirken, die diese Klassen verwenden, um Webanforderungen zu stellen und Antworten zu empfangen, in denen die integrierte Windows-Authentifizierung verwendet wird. Diese Änderung kann Webserver und Clientanwendungen auch auswirken, die so konfiguriert werden, um die Windows-Authentifizierung zu verwenden.

Diese Änderungen können Anwendungen auch beeinflussen, die diese Klassen verwenden, um andere Typen von den Anforderungen zu machen und Antworten zu empfangen, in denen die integrierte Windows-Authentifizierung verwendet wird.

Die Änderungen, um den erweiterten Schutz zu unterstützen sind nur für Anwendungen unter Windows 7 und Windows Server 2008 R2 verfügbar. Die erweiterten Schutzfunktionen sind auf früheren Versionen von Windows nicht verfügbar.

Der Entwurf der Integrierten Windows-Authentifizierung ermöglicht, dass einige Anmeldeinformationsantworten universell sind, was bedeutet, dass sie wieder verwendet oder weitergeleitet werden können. Die Herausforderungsantworten sollten an einem Minimum mit bestimmten Informationen des Ziels und mit einigen Channelbesondereinformationen vorzugsweise auch erstellt werden. Dienste können erweiterten Schutz dann bieten, um sicherzustellen, dass Anmeldeinformationen Herausforderungsantworten bestimmte Informationen des Diensts wie ein Dienstprinzipalname (SPN) enthalten. Mit diesen Informationen in den Anmeldeinformationen Austausch, sind Dienste, vor böswilligen Verwendung von Anmeldeinformationen Herausforderungsantworten besser schützen, die möglicherweise nicht ordnungsgemäß verwendet wurde.

Der erweiterte Schutzentwurf ist eine Erweiterung zu den Authentifizierungsprotokollen, die entwickelt wurden, um Authentifizierungsrelayangriffe zu verringern. Er bezieht sich auf das Konzept der Bindungsinformationen des Kanals und des Diensts.

Die allgemeinen Ziele sind die folgenden:

  1. Wenn der Client aktualisiert wird, um den erweiterten Schutz zu unterstützen, sollten Anwendungen Bindungsinformationen der Channelbindung und -Diensts an alle unterstützten Authentifizierungsprotokolle bereitstellen. Bindungsinformationen des Kanals können nur angegeben werden, wenn ein zu binden Channel (TLS) gibt. Bindungsinformationen des Diensts sollten immer angegeben werden.

  2. Die Server, die ordnungsgemäß konfiguriert, die Bindungsinformationen des Kanals und des Diensts überprüfen, wenn es im Clientauthentifizierungstoken vorhanden ist und weisen möglicherweise den Authentifizierungsversuch zurück, wenn die Channelbindungen nicht übereinstimmen. Je nach Bereitstellungsszenario überprüfen Server möglicherweise Channelbindung, Dienstbindung oder beides.

  3. Aktualisierte Server haben die Möglichkeit, Anforderungen der Client früherer Versionen annehmen oder ablehnen, die die Bindungsinformationen des Kanals nicht entsprechend Richtlinie enthalten.

Die Informationen, die von erweiterten Schutz verwendet werden, bestehen aus einem oder beiden der folgenden zwei Teile:

  1. Ein Channelbindungstoken oder ein CBT.

  2. Bindungsinformationen des Diensts in Form eines Dienstprinzipalnamens oder eines SPN.

Bindungsinformationen des Diensts sind ein Anzeichen für die Absicht eines Clients, zu einem bestimmten Dienstendpunkt zu authentifizieren. Es wird von Client zu Server mit den folgenden Eigenschaften verwendet:

  • Der SPN-Wert muss für den Server verfügbar sein, der in der Clientauthentifizierung Klartextform ausführt.

  • Der Wert des SPN ist öffentlich.

  • Das SPN muss bei dem Transport kryptografisch geschützt werden so, dass ein Man-in-the-middle-Angriff seinen Wert nicht einfügen, entfernen oder ändern kann.

Ein CBT ist eine Eigenschaft des äußeren sicheren Channels (wie TLS) verwendet, um (Bindung) sie an einer Konversation zu einem inneren, Client-authentifizierten Channel zu binden. Das CBT muss die folgenden Eigenschaften aufweisen (auch definiert durch IETF RFC 5056):

  • Wenn ein äußerer Channel vorhanden ist, muss der Wert des CBT eine Eigenschaft sein, die einen der äußere Channel oder der Serverendpunkt identifiziert, erzielen Sie unabhängig von Clients und Serverseiten einer Konversation.

  • Wert des CBT, das vom Client gesendet wird, darf nicht einige sein, den ein Angreifer auswirken kann.

  • Keine Garantien werden über Geheimhaltung des CBT-Werts gemacht. Dies bedeutet jedoch nicht, dass der Wert der Dienstbindung und Binden von der Informationen des Kanals von einer anderen jedoch den Server immer überprüft werden kann, der Authentifizierung ausgeführt wird, als das Protokoll, das das CBT enthält, kann es verschlüsselt.

  • Das CBT muss die Integrität kryptografisch sein, die in geschützt ist, durchfährt so, dass ein Angreifer den Wert nicht einfügen, entfernen oder ändern kann.

Channelbindung wird vom Client erreicht, der das SPN und das CBT zum Server in einer tamperproof Weise übertragen wird. Der Server überprüft die Bindungsinformationen des Kanals in Übereinstimmung mit der Richtlinie und weist Authentifizierungsversuche zurück, für die sie sich nicht glaubt, das beabsichtigte Ziel worden zu sein. Auf diese Weise, die zwei Channels werden kryptografisch zusammen gebunden.

Um die Kompatibilität mit vorhandenen Anwendungen beibehalten, und Clients wird ein Server konfiguriert sein Authentifizierungsversuchen um zuzulassen von Clients die noch nicht erweiterten Schutz unterstützen. Dies wird als "teilweise verhärtete" Konfiguration, im Gegensatz zu einer "vollständig verhärteten" Konfiguration.

Mehrere Komponenten in System.Net und System.Net.Security-Namespaces führen integrierte Windows-Authentifizierung im Namen eines aufrufende Anwendung aus. In diesem Abschnitt werden Änderungen an System.Net-Komponenten, um erweiterten Schutz in ihrem Verwendung von der integrierten Windows-Authentifizierung hinzuzufügen.

Erweiterter Schutz wird nur unter Windows 7. unterstützt. Ein Mechanismus wird bereitgestellt, sodass eine Anwendung bestimmen, wenn das Betriebssystem erweiterten Schutz unterstützt.

Der Authentifizierungsprozess, der mit der integrierten Windows-Authentifizierung, abhängig vom Authentifizierungsprotokoll verwendet wird verwendet wird, enthält häufig eine Herausforderung, die durch den Zielcomputer und das zurückgeschickte auf den Clientcomputer ausgegeben wird. Erweiterter Schutz fügt neue Funktionen diesem Authentifizierungsprozess hinzu

Der System.Security.Authentication.ExtendedProtection -Namespace unterstützt Authentifizierung mithilfe von erweitertem Schutz für Anwendungen. Die ChannelBinding-Klasse in diesem Namespace stellt eine Channelbindung dar. Die ExtendedProtectionPolicy-Klasse in diesem Namespace stellt die erweiterte Schutzrichtlinie dar, der vom Server verwendet wird, um eingehende Clientverbindungen zu überprüfen. Andere Klassenmember sind mit erweitertem Schutz verwendet.

Für Serveranwendungen enthalten diese Klassen Folgendes:

ExtendedProtectionPolicy , das die folgenden Elemente verfügt:

  • Eine OSSupportsExtendedProtection-Eigenschaft, die angibt, ob das Betriebssystem die integrierte Windows-Authentifizierung mit erweitertem Schutz unterstützt.

  • Ein PolicyEnforcement-Wert, der angibt, wann die erweiterte Schutzrichtlinie erzwungen werden soll.

  • Ein ProtectionScenario-Wert, der das Bereitstellungsszenario angibt. Dies beeinflusst, wie erweiterter Schutz aktiviert ist.

  • Optionales ServiceNameCollection, das die Liste der benutzerdefinierten SPN enthält, die verwendet wird, um an das SPN anzupassen, kann vom Client als das beabsichtigte Ziel der Authentifizierung bereit.

  • Optionales ChannelBinding, das eine benutzerdefinierte Channelbindung enthält, die für die Validierung zu verwenden. Dieses Szenario ist kein gängiger Fall

Der System.Security.Authentication.ExtendedProtection.Configuration -Namespace unterstützt die Konfiguration der Authentifizierung mithilfe von erweitertem Schutz für Anwendungen.

Einige jeweiligen wurden vorgenommen, um erweiterten Schutz im vorhandenen System.Net-Namespace zu unterstützen. Diese Änderungen gehören:

Eine Funktionsänderung wurde vorgenommen, um erweiterten Schutz für SMTP-Clientanwendungen im vorhandenen System.Net.Mail-Namespace zu unterstützen:

  • Eine TargetName-Eigenschaft in der SmtpClient-Klasse, die das SPN darstellt, die für die Authentifizierung bei der Anwendung verwenden, erweiterte Schutz für SMTP-Clientanwendungen.

Einige jeweiligen wurden vorgenommen, um erweiterten Schutz im vorhandenen System.Net.Security-Namespace zu unterstützen. Diese Änderungen gehören:

Eine SmtpNetworkElement-Eigenschaft wurde zur Stützkonfiguration des erweiterten Schutz für SMTP-Clienten im System.Net.Security-Namespace hinzugefügt.

Erweiterte Schutzunterstützung für die meisten Clientanwendungen geschieht automatisch. Die HttpWebRequest und SmtpClient-Klasse einzelne erweiterte Schutz, wenn die zugrunde liegende Version von Windows erweiterten Schutz unterstützt. Eine HttpWebRequest-Instanz sendet ein SPN, das von Uri erstellt wird. Standardmäßig sendet eine SmtpClient-Instanz ein SPN, das vom Hostnamen des SMTP-E-Mail-Servers erstellt wird.

Für benutzerdefinierte Authentifizierung können Clientanwendungen HttpWebRequest.EndGetRequestStream(IAsyncResult, TransportContext) verwenden, oder HttpWebRequest.GetRequestStream(TransportContext)-Methoden in HttpWebRequest-Klasse, die das Abrufen TransportContext und des CBT mithilfe der GetChannelBinding-Methode ermöglichen.

Das für die integrierte Windows-Authentifizierung verwendet, SPN, die von einer Instanz HttpWebRequest zu einem angegebenen Dienst gesendet wird, kann überschrieben werden, indem die CustomTargetNameDictionary-Eigenschaft festlegt.

Die TargetName-Eigenschaft kann verwendet werden, um einen benutzerdefinierten SPN festlegen, um für die integrierte Windows-Authentifizierung für die SMTP-Verbindung zu verwenden.

HttpListener wird automatisch Mechanismen zum Überprüfen von Dienstbindungen bereit, wenn es HTTP-Authentifizierung ausführt.

Das sicherste Szenario ist, erweiterten Schutz für HTTPS://- Präfixe zu aktivieren. In diesem Fall legen Sie HttpListener.ExtendedProtectionPolicy zu ExtendedProtectionPolicy mit PolicyEnforcement fest, die an WhenSupported oder zu Always festgelegt wurde, und ProtectionScenario, das zu einem Wert TransportSelected von WhenSupported festgelegt ist, wird HttpListener in teilweise verhärteten Modus ein, während Always in vollständig verhärtetem Modus entspricht.

In dieser Konfiguration, wenn eine Anforderung an den Server durch einen äußeren sicheren Kanal gemacht wird, wird der äußere Channel für eine Channelbindung abgefragt. Diese Channelbindung wird für die Authentifizierung SSPI-Aufrufen übergeben, die sicherstellen, dass die Channelbindung in der Authentifizierung BLOB übereinstimmt. Es gibt drei mögliche Ergebnisse:

  1. Das zugrunde liegende Betriebssystem des Servers unterstützt keine erweiterten Schutz. Die Anforderung wird nicht mit verfügbar gemacht, und eine unberechtigte (401) Antwort wird an den Client zurückgegeben. Eine Meldung wird auf HttpListener Ablaufverfolgungsquelle protokolliert, die den Grund für den Fehler angibt.

  2. Der SSPI-Aufruf verlässt das Angeben, dass jedes der Client eine Channelbindung angegeben, die nicht den erwarteten Wert übereinstimmt, der aus dem äußeren Channel oder vom Client konnte nicht wurden eine Channelbindung angeben abgerufen wurde, als die erweiterte Schutzrichtlinie auf dem Server für Always konfiguriert wurde. In beiden Fällen wird die Anforderung nicht zur Anwendung verfügbar gemacht, und eine unberechtigte (401) Antwort wird an den Client zurückgegeben. Eine Meldung wird auf HttpListener Ablaufverfolgungsquelle protokolliert, die den Grund für den Fehler angibt.

  3. Der Client gibt die richtige Channelbindung oder an ermöglicht, dass herzustellen, ohne eine Channelbindung anzugeben, da die erweiterte Schutzrichtlinie auf dem Server mit WhenSupported konfiguriert wird, das die Anforderung an die Anwendung für die Verarbeitung zurückgegeben wird. Keine Dienstnameüberprüfung wird automatisch ausgeführt. Eine Anwendung wählt, seine eigene Dienstnamevalidierung mithilfe der ServiceName-Eigenschaft auszuführen, jedoch unter diesen Umständen ist sie redundant.

Wenn eine Anwendung eigene SSPI-Aufrufe Authentifizierung auf Grundlage der Kleckse ausführen können, die hin und her im Text einer HTTP-Anforderung übergeben und Channelbindung unterstützen möchte, muss sie die erwartete Channelbindung aus dem äußeren sicheren Kanal mithilfe HttpListener abrufen, um es zu systemeigenen Win32-Funktion AcceptSecurityContext zu übergeben. Um dies zu erreichen, verwenden Sie die TransportContext-Eigenschaft, und rufen Sie GetChannelBinding-Methode auf um das CBT abzurufen. Nur Endpunktbindungen werden unterstützt. Wenn die übrigen Endpoint angegeben wird, wird NotSupportedException ausgelöst. Wenn die zugrunde liegende Betriebssystemunterstützung Bindung lenkt, gibt die GetChannelBinding-Methode ChannelBindingSafeHandle zurück, das einen Zeiger auf einen Channelbinden entsprechend umschließt, damit das Übergeben AcceptSecurityContext als der pvBuffer Member einer SecBuffer-Struktur arbeiten, die in den pInput-Parameter übergeben wird. Die Size-Eigenschaft enthält die Länge, in Bytes, der Channelbindung. Wenn das zugrunde liegende Betriebssystem nicht Channelbindungen unterstützt, gibt die Funktion null zurück.

Ein weiteres mögliches Szenario ist, erweiterten Schutz für HTTP://- Präfixe zu aktivieren, wenn Proxy nicht verwendet werden. In diesem Fall legen Sie HttpListener.ExtendedProtectionPolicy zu ExtendedProtectionPolicy mit PolicyEnforcement fest, die an WhenSupported oder zu Always festgelegt wurde, und ProtectionScenario, das zu einem Wert TransportSelected von WhenSupported festgelegt ist, wird HttpListener in teilweise verhärteten Modus ein, während Always in vollständig verhärtetem Modus entspricht.

Eine Standardliste der zulässigen Dienstnamen wird auf Grundlage der Präfixe erstellt, die mit HttpListener registriert wurden. Diese Standardliste kann durch die DefaultServiceNames-Eigenschaft überprüft werden. Wenn diese Liste nicht umfassend ist, kann eine Anwendung eine Zollamtnameauflistung im Konstruktor für die Klasse ExtendedProtectionPolicy angeben, die anstelle der standardmäßigen DienstSymboltabelle verwendet wird.

In dieser Konfiguration wenn eine Anforderung an den Server ohne zurückgehalten einer äußere des sicheren Channels Authentifizierung normalerweise ohne eine Channelbindungsüberprüfung gemacht wird. Wenn die Authentifizierung erfolgreich ist, wird der Kontext für den Dienstnamen abgefragt, den der Client zu der Liste von zulässigen Dienstnamen vom und überprüfen. Es gibt vier mögliche Ergebnisse:

  1. Das zugrunde liegende Betriebssystem des Servers unterstützt keine erweiterten Schutz. Die Anforderung wird nicht mit verfügbar gemacht, und eine unberechtigte (401) Antwort wird an den Client zurückgegeben. Eine Meldung wird auf HttpListener Ablaufverfolgungsquelle protokolliert, die den Grund für den Fehler angibt.

  2. Das zugrunde liegende Betriebssystem des Clients unterstützt keine erweiterten Schutz. In der WhenSupported Konfiguration folgt der Authentifizierungsversuch und die Anforderung an die Anwendung zurückgegeben. In der Always Konfiguration schlägt der Authentifizierungsversuch aus. Die Anforderung wird nicht mit verfügbar gemacht, und eine unberechtigte (401) Antwort wird an den Client zurückgegeben. Eine Meldung wird auf HttpListener Ablaufverfolgungsquelle protokolliert, die den Grund für den Fehler angibt.

  3. Das zugrunde liegende Betriebssystem des Clients unterstützt erweiterten Schutz, aber die Anwendung wurde keine Dienstbindung an. Die Anforderung wird nicht mit verfügbar gemacht, und eine unberechtigte (401) Antwort wird an den Client zurückgegeben. Eine Meldung wird auf HttpListener Ablaufverfolgungsquelle protokolliert, die den Grund für den Fehler angibt.

  4. Der Client hat eine Dienstbindung an. Die Dienstbindung wird der Liste der zulässigen Dienstbindungen verglichen. Wenn sie übereinstimmt, wird die Anforderung an die Anwendung zurückgegeben. Andernfalls wird die Anforderung nicht zur Anwendung verfügbar gemacht, und eine unberechtigte (401) Antwort wird automatisch an den Client zurückgegeben. Eine Meldung wird auf HttpListener Ablaufverfolgungsquelle protokolliert, die den Grund für den Fehler angibt.

Wenn dieser Ansatz einfache mithilfe einer Zulassungsliste von akzeptablen Dienstnamen nicht ausreicht, wird möglicherweise eine Anwendung eine eigene Dienstnamevalidierung vom Abfragen der ServiceName-Eigenschaft bereit. In Fälle 1 und 2 oben, gibt die null-Eigenschaft zurück. Fall 3, wird eine leere Zeichenfolge zurückgeben. Fall 4, der Dienstname, vom Client angegeben ist, zurückgegeben.

Diese erweiterten Schutzfunktionen können durch Serveranwendungen für die Authentifizierung mit anderen Arten von Anforderungen auch verwendet werden und wenn vertrauenswürdige Proxy verwendet werden.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft