Zabezpečení zpráv ve WCF
Windows Communication Foundation (WCF) má dva hlavní režimy pro zajištění zabezpečení (Transport
a Message
) a třetí režim (TransportWithMessageCredential
), který kombinuje tyto dva režimy. Toto téma popisuje zabezpečení zpráv a důvody jeho použití.
Co je zabezpečení zpráv?
Zabezpečení zpráv používá k zabezpečení zpráv specifikaci WS-Security. Specifikace WS-Security popisuje vylepšení zasílání zpráv SOAP za účelem zajištění důvěrnosti, integrity a ověřování na úrovni zprávy SOAP (místo úrovně přenosu).
Stručně řečeno se zabezpečení zpráv liší od zabezpečení přenosu zapouzdřením přihlašovacích údajů zabezpečení a deklarací identity všemi zprávami spolu s ochranou zpráv (podepisováním nebo šifrováním). Použití zabezpečení přímo na zprávu úpravou jejího obsahu umožňuje, aby zabezpečená zpráva byla sama obsahující s ohledem na aspekty zabezpečení. To umožňuje některé scénáře, které nejsou možné při použití zabezpečení přenosu.
Důvody použití zabezpečení zpráv
V zabezpečení na úrovni zpráv jsou všechny informace o zabezpečení zapouzdřené ve zprávě. Zabezpečení zprávy pomocí zabezpečení na úrovni zpráv místo zabezpečení na úrovni přenosu má následující výhody:
Kompletní zabezpečení Zabezpečení přenosu, jako je protokol SSL (Secure Sockets Layer), zabezpečuje zprávy pouze v případě, že je komunikace point-to-point. Pokud je zpráva před dosažením konečného příjemce směrována na jednoho nebo více zprostředkovatelů SOAP (například směrovače), nebude zpráva sama chráněna, jakmile ji zprostředkovatel přečte z drátu. Kromě toho jsou ověřovací informace klienta k dispozici pouze prvnímu zprostředkujícímu a musí být v případě potřeby znovu předány koncovému příjemci mimo pásmo. To platí i v případě, že celá trasa používá zabezpečení SSL mezi jednotlivými segmenty směrování. Protože zabezpečení zpráv funguje přímo se zprávou a zabezpečuje v ní XML, zůstane zabezpečení se zprávou bez ohledu na to, kolik zprostředkovatelů se účastní, než dosáhne konečného příjemce. To umožňuje scénář skutečného komplexního zabezpečení.
Větší flexibilita. Části zprávy místo celé zprávy můžou být podepsané nebo zašifrované. To znamená, že zprostředkovatelé mohou zobrazit části zprávy, které jsou pro ně určeny. Pokud odesílatel potřebuje, aby část informací ve zprávě zviditelněl zprostředkovatelům, ale chce zajistit, aby se s ním manipuloval, může ho jenom podepsat, ale nechat ho nezašifrovaný. Vzhledem k tomu, že podpis je součástí zprávy, konečný příjemce může ověřit, že informace ve zprávě byly přijaty beze změny. Jeden scénář může mít zprostředkující službu SOAP, která směruje zprávu podle hodnoty hlavičky akce. Wcf ve výchozím nastavení nešifruje hodnotu akce, ale podepíše ji, pokud se používá zabezpečení zpráv. Proto jsou tyto informace k dispozici všem zprostředkovatelům, ale nikdo je nemůže změnit.
Podpora více přenosů Zabezpečené zprávy můžete odesílat přes mnoho různých přenosů, jako jsou pojmenované kanály a TCP, aniž byste se museli spoléhat na protokol pro zabezpečení. Při zabezpečení na úrovni přenosu jsou všechny informace o zabezpečení vymezeny na jediné konkrétní přenosové připojení a nejsou dostupné ze samotného obsahu zprávy. Zabezpečení zpráv zajišťuje zabezpečení zprávy bez ohledu na to, jaký přenos používáte k přenosu zprávy, a kontext zabezpečení je přímo vložen do zprávy.
Podpora široké sady přihlašovacích údajů a deklarací identity Zabezpečení zpráv je založeno na specifikaci WS-Security, která poskytuje rozšiřitelnou architekturu umožňující přenést jakýkoli typ deklarace identity uvnitř zprávy SOAP. Na rozdíl od zabezpečení přenosu není sada ověřovacích mechanismů nebo deklarací identity, kterou můžete použít, omezena možnostmi přenosu. Zabezpečení zpráv WCF zahrnuje více typů ověřování a přenosu deklarací identity a je možné ho podle potřeby rozšířit tak, aby podporovala další typy. Z těchto důvodů například scénář federovaných přihlašovacích údajů není možný bez zabezpečení zpráv. Další informace o scénářích federace, které WCF podporuje, najdete v tématu Federace a vystavené tokeny.
Porovnání zabezpečení zpráv a přenosu
Výhody a nevýhody zabezpečení na úrovni přenosu
Zabezpečení přenosu má následující výhody:
Nevyžaduje, aby komunikující strany porozuměly konceptům zabezpečení na úrovni XML. To může zlepšit interoperabilitu, například při použití protokolu HTTPS k zabezpečení komunikace.
Obecně se zlepšil výkon.
K dispozici jsou hardwarové akcelerátory.
Streamování je možné.
Zabezpečení přenosu má následující nevýhody:
Pouze hop-to-hop.
Omezená a neextensible sada přihlašovacích údajů.
Závislý na dopravě.
Nevýhody zabezpečení na úrovni zpráv
Zabezpečení zpráv má následující nevýhody:
Výkon
Streamování zpráv se nedá použít.
Vyžaduje implementaci mechanismů zabezpečení na úrovni XML a podporu specifikace WS-Security. To může mít vliv na interoperabilitu.