Verbund und VertrauenswürdigkeitFederation and Trust

In diesem Thema werden verschiedene Aspekte im Zusammenhang mit verbundanwendungen, Vertrauensgrenzen und Konfiguration und Verwendung von ausgestellten Token in der Windows Communication Foundation (WCF) behandelt.This topic covers various aspects related to federated applications, trust boundaries and configuration, and use of issued tokens in Windows Communication Foundation (WCF).

Dienste, Sicherheitstokendienste und VertrauenswürdigkeitServices, Security Token Services, and Trust

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.Services that expose federated endpoints typically expect clients to authenticate using a token provided by a specific issuer. 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.It is important that the service is configured with the correct credentials for the issuer; otherwise, it will not be able to verify signatures over the issued tokens, and the client will be unable to communicate with the service. Weitere Informationen zum Konfigurieren von Aussteller Anmeldeinformationen für den Dienst finden Sie unter Vorgehensweise: Konfigurieren von Anmeldeinformationen auf einem Verbunddienst.For more information about configuring issuer credentials on the service, see How to: Configure Credentials on a Federation Service.

Ä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.Similarly, when using symmetric keys, the keys are encrypted for the target service, so you must configure the security token service with the correct credentials for the target service; otherwise, it will be unable to encrypt the key for the target service, and again, the client will be unable to communicate with the service.

WCF-Dienste verwenden Sie den Wert der MaxClockSkew Eigenschaft auf die SecurityBindingElement Uhr uhrabweichung zwischen Client und Dienst ermöglichen.WCF services use the value of the MaxClockSkew property on the SecurityBindingElement to allow for clock skew between the client and service. 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.In federation, the MaxClockSkew setting applies to clock skews between both the client and the security token service from where the client obtained the issued token. Daher müssen die Sicherheitstokendienste keine Toleranz für Taktverschiebungen einberechnen, wenn die tatsächlichen Zeiten und die Ablaufzeiten des ausgestellten Tokens festgelegt werden.Therefore, security token services need not make clock-skew allowances when setting the issued token's effective and expiration times.

Hinweis

Die Bedeutung der Taktverschiebung wächst mit abnehmender Lebensdauer des ausgestellten Tokens.The importance of clock skew increases as the lifetime of the issued token shortens. In den meisten Fällen ist die Taktverschiebung kein großes Problem, wenn die Tokenlebensdauer 30 Minuten oder mehr beträgt.In most cases, clock skew is not a significant issue if the token lifetime is 30 minutes or more. 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.Scenarios with shorter lifetimes or where the exact validity time of the token is important should be designed to take clock skew into account.

Verbundendpunkte und TimeoutsFederated Endpoints and Time-Outs

Wenn ein Client mit einem Verbundendpunkt kommuniziert, muss er zunächst ein angemessenes Token von einem Sicherheitstokendienst erhalten.When a client communicates with a federated endpoint, it must first acquire an appropriate token from a security token service. Wenn der Sicherheitstokendienst einen Verbundendpunkt verfügbar macht, muss der Client zunächst ein Token von dem Aussteller dieses Endpunkts anfordern.If the security token service exposes a federated endpoint, the client must first obtain a token from the issuer for that endpoint. 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.Each token acquisition takes time, and that time is subject to the overall time-out for sending the actual message to the final endpoint.

Auf dem clientseitigen Kanal wird das Timeout z. B. auf 30 Sekunden festgelegt.For example, the time-out on the client-side channel is set to 30 seconds. 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.Two token issuers need to be called to retrieve tokens before sending the message to the final endpoint, and each takes 15 seconds to issue a token. In diesem Fall schlägt der Versuch fehl, und eine TimeoutException wird ausgelöst.In this case, the attempt will fail and a TimeoutException is thrown. 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.Thus, you need to set the OperationTimeout value on the client channel to a value large enough to include the time taken to retrieve all issued tokens. 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.In the case where a value is not specified for the OperationTimeout property, the OpenTimeout property or the SendTimeout property (or both) need to be set to a value large enough to include the time taken to retrieve all issued tokens.

Tokenlebensdauer und ErneuerungToken Lifetime and Renewal

WCF-Clients überprüfen nicht das ausgestellte Token, wenn eine ursprüngliche Anforderung an einen Dienst zu stellen.WCF clients do not check the issued token when making an initial request to a service. Stattdessen vertraut WCF den Sicherheitstokendienst zum Ausstellen eines Tokens mit entsprechenden wirksamen Zeiten und Ablaufzeiten.Rather, WCF trusts the security token service to issue a token with appropriate effective and expiration times. 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.If the token is cached by the client and reused, the token lifetime is checked on subsequent requests and the client automatically renews the token if necessary. Weitere Informationen zum Zwischenspeichern von token finden Sie unter Vorgehensweise: Erstellen eines Clients Federated.For more information about token caching, see How to: Create a Federated Client.

Angabe von kurzen Lebensdauern, Größenordnung von 30 Sekunden oder weniger für ausgestellte Token oder Sicherheitskontexttoken ist, kann zu verhandlungstimeouts oder anderen Ausnahmen, die von WCF-Clients ausgelöst wird, wenn Token anfordert ausgestellte oder wenn verhandelt oder erneuert Sicherheit Token für den Sicherheitskontext.Specifying short lifetimes, on the order of 30 seconds or less for issued tokens or security context tokens, may result in negotiation time-outs or other exceptions being thrown by WCF clients when requesting issued tokens or when negotiating or renewing security context tokens.

Ausgestellte Token und InclusionModeIssued Tokens and 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.Whether an issued token is serialized in a message sent from a client to a federated endpoint or not is controlled by setting the InclusionMode property of the SecurityTokenParameters class. Diese Eigenschaft kann auf einen der SecurityTokenInclusionMode-Enumerationwerte festgelegt werden, ist aber in den meisten Verbundszenarien nutzlos.This property can be set to one of the SecurityTokenInclusionMode enumeration values, but it is not useful in most federated scenarios. 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.The SecurityTokenInclusionMode.Never and SecurityTokenInclusionMode.AlwaysToInitiator values cause the client to send a reference to the token issued by the security token service to the relying party. Wenn die vertrauende Seite keine Kopie des ausgestellten Tokens besitzt, schlägt die Authentifizierung fehl, da der Tokenverweis nicht aufgelöst werden kann.Unless the relying party possesses a copy of the issued token, authentication will fail because the token reference is not resolvable. WCF behandelt SecurityTokenInclusionMode.Once als Entsprechung SecurityTokenInclusionMode.AlwaysToRecipient.WCF treats SecurityTokenInclusionMode.Once as equivalent to SecurityTokenInclusionMode.AlwaysToRecipient.

Siehe auchSee Also

SecurityTokenInclusionMode
Vorgehensweise: Erstellen eines VerbundclientsHow to: Create a Federated Client
Vorgehensweise: Konfigurieren von Anmeldeinformationen für einen VerbunddienstHow to: Configure Credentials on a Federation Service
Vorgehensweise: Erstellen einer WSFederationHttpBindingHow to: Create a WSFederationHttpBinding