Sdílet prostřednictvím


Federace a důvěryhodnost

Toto téma popisuje různé aspekty související s federovanými aplikacemi, hranicemi důvěryhodnosti a konfigurací a používání vydaných tokenů ve Windows Communication Foundation (WCF).

Služby, služby tokenů zabezpečení a vztah důvěryhodnosti

Služby, které zpřístupňují federované koncové body, obvykle očekávají, že se klienti budou ověřovat pomocí tokenu poskytnutého konkrétním vystavitelem. Je důležité, aby služba byla nakonfigurována se správnými přihlašovacími údaji pro vystavitele; Jinak nebude moct ověřit podpisy vystavených tokenů a klient nebude moct se službou komunikovat. Další informace o konfiguraci přihlašovacích údajů vystavitele ve službě najdete v tématu Postupy: Konfigurace přihlašovacích údajů ve službě FEDERATION Service.

Podobně při použití symetrických klíčů jsou klíče pro cílovou službu zašifrované, takže je nutné nakonfigurovat službu tokenů zabezpečení se správnými přihlašovacími údaji pro cílovou službu; jinak nebude moct zašifrovat klíč cílové služby a klient nebude moct se službou komunikovat.

Služby WCF používají hodnotu MaxClockSkew vlastnosti SecurityBindingElement umožňující nerovnoměrnou distribuci hodin mezi klientem a službou. Ve federaci se MaxClockSkew nastavení vztahuje na nerovnoměrné distribuce hodin mezi klientem a službou tokenů zabezpečení, ze které klient získal vystavený token. Proto služby tokenů zabezpečení nemusí při nastavování platnosti vydaného tokenu a doby vypršení platnosti vytvářet příspěvky ve formátu clock-skew.

Poznámka:

Důležitost nerovnoměrné distribuce hodin se zvyšuje při zkrácení životnosti vydaného tokenu. Ve většině případů není nerovnoměrná distribuce hodin významným problémem, pokud je životnost tokenu 30 minut nebo déle. Scénáře s kratší životností nebo v případech, kdy je přesná doba platnosti tokenu důležitá, by měla být navržena tak, aby zohlednila nerovnoměrnou distribuci hodin.

Federované koncové body a časové limity

Když klient komunikuje s federovaným koncovým bodem, musí nejprve získat příslušný token ze služby tokenů zabezpečení. Pokud služba tokenů zabezpečení zveřejňuje federovaný koncový bod, klient musí nejprve získat token od vystavitele daného koncového bodu. Získání každého tokenu nějakou dobu trvá a tento čas podléhá celkovému vypršení časového limitu pro odeslání skutečné zprávy do konečného koncového bodu.

Časový limit kanálu na straně klienta je například nastavený na 30 sekund. Před odesláním zprávy do koncového koncového bodu je potřeba volat dva vystavitele tokenů, aby se tokeny načetly, a každý zabere 15 sekund, než token vydá. V takovém případě se pokus nezdaří a TimeoutException vyvolá se. Proto musíte nastavit OperationTimeout hodnotu v kanálu klienta na hodnotu dostatečně velkou, aby zahrnovala čas potřebný k načtení všech vydaných tokenů. V případě, že není pro OperationTimeout vlastnost zadána hodnota, OpenTimeout musí být vlastnost nebo SendTimeout vlastnost (nebo obojí) nastavena na hodnotu dostatečně velkou, aby zahrnovala čas potřebný k načtení všech vydaných tokenů.

Životnost a prodloužení platnosti tokenu

Klienti WCF nekontrolují vydaný token při provádění počátečního požadavku na službu. Wcf důvěřuje službě tokenů zabezpečení, aby vystavovat token s odpovídajícími efektivními a vypršením platnosti. Pokud je token uložený v mezipaměti klienta a znovu ho použije, doba života tokenu se zkontroluje na následných požadavcích a v případě potřeby klient token automaticky obnoví. Další informace o ukládání tokenů do mezipaměti naleznete v tématu Postupy: Vytvoření federovaného klienta.

Určení krátkých životností může v pořadí 30 sekund nebo méně pro vystavené tokeny nebo kontextové tokeny zabezpečení způsobit vypršení časového limitu vyjednávání nebo jiné výjimky klientů WCF při vyžádání vydaných tokenů nebo při vyjednávání nebo obnovení tokenů kontextu zabezpečení.

Vystavené tokeny a InclusionMode

Určuje, zda je vystavený token serializován ve zprávě odeslané z klienta do federovaného koncového bodu nebo není řízen nastavením InclusionMode vlastnosti SecurityTokenParameters třídy. Tuto vlastnost lze nastavit na jednu z hodnot výčtu SecurityTokenInclusionMode , ale není užitečná ve většině federovaných scénářů. Hodnoty SecurityTokenInclusionMode.Never a SecurityTokenInclusionMode.AlwaysToInitiator hodnoty způsobí, že klient odešle odkaz na token vystavený službou tokenů zabezpečení předávající straně. Pokud předávající strana nemá kopii vydaného tokenu, ověřování selže, protože odkaz na token nelze přeložit. WCF považuje SecurityTokenInclusionMode.Once za ekvivalentní SecurityTokenInclusionMode.AlwaysToRecipient.

Viz také