Föderation und Vertrauensmodell

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

Dienste, Sicherheitstokendienste und Vertrauen

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. Es ist wichtig, dass der Dienst mit den richtigen Anmeldeinformationen für den Aussteller konfiguriert ist; andernfalls kann sie 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.

Ebenso werden bei Verwendung symmetrischer Schlüssel die Schlüssel für den Zieldienst verschlüsselt, daher müssen Sie den Sicherheitstokendienst mit den richtigen Anmeldeinformationen für den Zieldienst konfigurieren; andernfalls kann der Schlüssel für den Zieldienst nicht verschlüsselt werden, und erneut kann der Client nicht mit dem Dienst kommunizieren.

WCF-Dienste verwenden den Wert der MaxClockSkew Eigenschaft für das SecurityBindingElement, um eine Zeitdifferenz zwischen Client und Dienst zu ermöglichen. Im Partnerverbund gilt die MaxClockSkew Einstellung für Uhrzeitabweichungen zwischen sowohl dem Client als auch dem Sicherheitstokendienst, von dem der Client das ausgestellte Token abgerufen hat. Daher müssen Sicherheitstokendienste beim Festlegen der Gültigkeits- und Ablaufzeiten des ausgestellten Tokens keine Anpassungen aufgrund von Zeitabweichungen vornehmen.

Hinweis

Die Bedeutung der Taktverschiebung wächst mit abnehmender Lebensdauer des ausgestellten Tokens. In den meisten Fällen stellt die Uhrabweichung kein erhebliches Problem dar, wenn die Lebensdauer eines Tokens 30 Minuten oder mehr beträgt. Szenarien mit kürzeren Lebenszeiten oder bei denen die genaue Gültigkeitsdauer des Tokens wichtig ist, sollten darauf ausgelegt werden, die Uhrzeitabweichung zu berücksichtigen.

Verbundendpunkte und Timeouts

Wenn ein Client mit einem federierten Endpunkt kommuniziert, muss er zuerst ein entsprechendes Token von einem Sicherheitstokendienst abrufen. Wenn der Security Token Service einen föderierten Endpunkt bereitstellt, muss der Client zuerst ein Token vom Aussteller für diesen Endpunkt abrufen. Jeder Tokenerwerb dauert Zeit, und diese Zeit unterliegt dem Gesamtzeitlimit für das Senden der tatsächlichen Nachricht an den endgültigen Endpunkt.

Beispielsweise wird das Timeout im clientseitigen Kanal auf 30 Sekunden festgelegt. Zwei Tokenherausgeber müssen aufgerufen werden, um Token abzurufen, bevor die Nachricht an den endgültigen Endpunkt gesendet wird, und jeder benötigt 15 Sekunden, um ein Token auszugeben. In diesem Fall schlägt der Versuch fehl, und eine TimeoutException wird ausgelöst. Daher müssen Sie den OperationTimeout Wert im Clientkanal auf einen Wert festlegen, der groß genug ist, um die Zeit einzuschließen, die zum Abrufen aller ausgegebenen Token benötigt wird. Wenn für die OperationTimeout Eigenschaft kein Wert angegeben ist, muss die OpenTimeout Eigenschaft oder die SendTimeout Eigenschaft (oder beide) auf einen Wert festgelegt werden, der groß genug ist, um die Zeit einzuschließen, die zum Abrufen aller ausgestellten Token benötigt wird.

Tokenlebensdauer und Erneuerung

WCF-Clients überprüfen das ausgegebene Token nicht, wenn eine anfängliche Anforderung an einen Dienst gestellt wird. Stattdessen vertraut WCF auf den Sicherheitstokendienst, um ein Token mit geeigneten Gültigkeitsbeginn- und Ablaufzeiten auszustellen. Wenn das Token vom Client zwischengespeichert und wiederverwendet wird, wird die Tokenlebensdauer bei nachfolgenden Anforderungen überprüft, und der Client erneuert das Token bei Bedarf automatisch. Weitere Informationen zum Zwischenspeichern von Token finden Sie unter How to: Create a Federated Client.

Die Angabe einer kurzen Lebensdauer von 30 Sekunden oder weniger für ausgestellte Token oder Sicherheitskontexttoken kann dazu führen, dass Verhandlungs-Timeouts oder andere Ausnahmen von WCF-Clients ausgelöst werden, wenn ausgestellte Token angefordert werden oder wenn Sicherheitskontexttoken ausgehandelt 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 oder nicht, wird durch Festlegung der InclusionMode-Eigenschaft der SecurityTokenParameters-Klasse gesteuert. Diese Eigenschaft kann auf einen der Enumerationswerte festgelegt werden, ist aber in den SecurityTokenInclusionMode meisten Verbundszenarien nicht hilfreich. Die SecurityTokenInclusionMode.Never- und SecurityTokenInclusionMode.AlwaysToInitiator-Werte führen dazu, dass der Client einen Verweis auf das vom Sicherheitstokendienst ausgestellte Token an die Vertrauenspartei sendet. Sofern die vertrauende Seite nicht über eine Kopie des ausgestellten Tokens verfügt, schlägt die Authentifizierung fehl, da der Tokenverweis nicht aufgelöst werden kann. WCF behandelt SecurityTokenInclusionMode.Once gleichbedeutend mit SecurityTokenInclusionMode.AlwaysToRecipient.

Siehe auch