Teilen über


Verbund und Vertrauenswürdigkeit

In diesem Thema werden verschiedene Aspekte im Zusammenhang mit Verbundanwendungen, Vertrauensstellungsgrenzen und Konfiguration sowie die Verwendung ausgestellter Token in Windows Communication Foundation (WCF) behandelt.

Dienste, Sicherheitstokendienste und Vertrauenswürdigkeit

Dienste, die Verbundendpunkte verfügbar machen, erwarten normalerweise von den Clients, dass sie sich über ein Token authentifizieren, das von einem bestimmten Aussteller bereitgestellt wird. Der Dienst muss mit den richtigen Anmeldeinformationen für den Aussteller konfiguriert werden. Andernfalls kann er keine Signaturen über die ausgestellten Token überprüfen, und der Client kann nicht mit dem Dienst kommunizieren. Weitere Informationen zur Konfiguration von Anmeldeinformationen für den Dienst finden Sie unter Vorgehensweise: Konfigurieren von Anmeldeinformationen auf einem Verbunddienst.

Ähnlich verhält es sich mit Nutzung von symmetrischen Schlüsseln. Die Schlüssel werden für den Zieldienst verschlüsselt, d. h. der Sicherheitstokendienst muss mit den korrekten Anmeldeinformationen für den Zieldienst konfiguriert werden. Sonst kann er den Schlüssel für den Zieldienst nicht verschlüsseln und der Client kann auch hier nicht mit dem Dienst kommunizieren.

WCF-Dienste verwenden den Wert der MaxClockSkew-Eigenschaft für SecurityBindingElement, um eine Zeitdehnung zwischen Client und Dienst zu ermöglichen. In einem Verbund gilt die Einstellung MaxClockSkew für Taktverschiebungen zwischen dem Client und dem Sicherheitstokendienst, von dem der Client das ausgestellte Token erhalten hat. Daher müssen die Sicherheitstokendienste keine Toleranz für Taktverschiebungen einberechnen, wenn die tatsächlichen Zeiten und die Ablaufzeiten des ausgestellten Tokens festgelegt werden.

Hinweis

Die Bedeutung der Taktverschiebung wächst mit abnehmender Lebensdauer des ausgestellten Tokens. In den meisten Fällen ist die Taktverschiebung kein großes Problem, wenn die Tokenlebensdauer 30 Minuten oder mehr beträgt. Szenarien mit kürzeren Lebensdauern oder Szenarien, bei denen die genaue Prüfzeit des Tokens wichtig ist, sollten so ausgelegt werden, dass sie die Taktverschiebung berücksichtigen.

Verbundendpunkte und Timeouts

Wenn ein Client mit einem Verbundendpunkt kommuniziert, muss er zunächst ein angemessenes Token von einem Sicherheitstokendienst erhalten. Wenn der Sicherheitstokendienst einen Verbundendpunkt verfügbar macht, muss der Client zunächst ein Token von dem Aussteller dieses Endpunkts anfordern. Jeder Tokenerwerb dauert eine gewisse Zeit, und während dieser Zeit fällt er unter das Gesamttimeout für das Senden der tatsächlichen Nachricht an den finalen Endpunkt.

Auf dem clientseitigen Kanal wird das Timeout z. B. auf 30 Sekunden festgelegt. Zwei Tokenaussteller müssen aufgefordert werden, Tokens abzurufen, bevor die Nachricht an den finalen Endpunkt verschickt wird; jeder benötigt für das Ausstellen eines Tokens 15 Sekunden. In diesem Fall schlägt der Versuch fehl, und eine TimeoutException wird ausgelöst. Daher müssen Sie den Wert für OperationTimeout auf dem Clientkanal hoch genug festlegen, damit er auch die Zeit berücksichtigt, die das Abrufen aller ausgestellten Token in Anspruch nimmt. Sollte kein Wert für die Eigenschaft OperationTimeout festgelegt sein, muss die Eigenschaft OpenTimeout oder die Eigenschaft SendTimeout (oder beide) auf einen Wert festgelegt werden, der hoch genug ist, um die Zeit, die das Abrufen aller ausgestellten Token beansprucht, zu berücksichtigen.

Tokenlebensdauer und Erneuerung

WCF-Clients überprüfen das ausgestellte Token nicht, wenn sie eine ursprüngliche Anforderung an einen Dienst stellen. Stattdessen vertraut WCF darauf, dass der Sicherheitstokendienst ein Token mit entsprechend wirksamen Zeiten und Ablaufzeiten ausgibt. Wenn das Token vom Client zwischengespeichert und wiederverwendet wird, wird die Tokenlebensdauer bei den folgenden Anforderungen überprüft, und der Client erneuert das Token ggf. automatisch. Weitere Informationen zur Zwischenspeicherung von Token finden Sie unter Vorgehensweise: Erstellen eines Verbundclients.

Die Angabe von kurzen Lebensdauern (d. h. 30 Sekunden oder weniger für ausgestellte Token oder Sicherheitskontexttoken) kann zu Verhandlungstimeouts oder anderen Ausnahmen vonseiten der WCF-Clients führen, wenn ausgestellte Token angefordert werden oder wenn Sicherheitskontexttoken verhandelt oder erneuert werden.

Ausgestellte Token und InclusionMode

Ob ein ausgestelltes Token in einer Nachricht, die von einem Client an einen Verbundendpunkt gesendet wird, serialisiert wird, hängt von der Einstellung der Eigenschaft InclusionMode der Klasse SecurityTokenParameters ab. Diese Eigenschaft kann auf einen der SecurityTokenInclusionMode-Enumerationwerte festgelegt werden, ist aber in den meisten Verbundszenarien nutzlos. Die Werte SecurityTokenInclusionMode.Never und SecurityTokenInclusionMode.AlwaysToInitiator sorgen dafür, dass der Client einen Bezug an das Token sendet, das der Sicherheitstokendienst der vertrauenden Seite ausgestellt hat. Wenn die vertrauende Seite keine Kopie des ausgestellten Tokens besitzt, schlägt die Authentifizierung fehl, da der Tokenverweis nicht aufgelöst werden kann. WCF behandelt SecurityTokenInclusionMode.Once als gleichwertig zu SecurityTokenInclusionMode.AlwaysToRecipient.

Siehe auch