Zabezpieczenia komunikatów w architekturze WCF
Program Windows Communication Foundation (WCF) ma dwa główne tryby zapewniania zabezpieczeń (Transport
i Message
) i trzeciego trybu (TransportWithMessageCredential
), który łączy te dwa tryby. W tym temacie omówiono zabezpieczenia komunikatów i powody jego używania.
Co to jest zabezpieczenia komunikatów?
Zabezpieczenia komunikatów używają specyfikacji WS-Security do zabezpieczania komunikatów. Specyfikacja WS-Security opisuje ulepszenia obsługi komunikatów PROTOKOŁU SOAP w celu zapewnienia poufności, integralności i uwierzytelniania na poziomie komunikatów protokołu SOAP (zamiast poziomu transportu).
Krótko mówiąc, zabezpieczenia komunikatów różnią się od zabezpieczeń transportu przez hermetyzowanie poświadczeń zabezpieczeń i oświadczeń z każdym komunikatem wraz z ochroną komunikatów (podpisywanie lub szyfrowanie). Zastosowanie zabezpieczeń bezpośrednio do wiadomości przez zmodyfikowanie jej zawartości umożliwia samozabezpieczony komunikat w odniesieniu do aspektów zabezpieczeń. Umożliwia to korzystanie z niektórych scenariuszy, które nie są możliwe w przypadku użycia zabezpieczeń transportu.
Powody korzystania z zabezpieczeń komunikatów
W przypadku zabezpieczeń na poziomie komunikatu wszystkie informacje o zabezpieczeniach są hermetyzowane w komunikacie. Zabezpieczanie komunikatu przy użyciu zabezpieczeń na poziomie komunikatów zamiast zabezpieczeń na poziomie transportu ma następujące zalety:
Kompleksowe zabezpieczenia. Zabezpieczenia transportu, takie jak Secure Sockets Layer (SSL) zabezpieczają komunikaty tylko wtedy, gdy komunikacja jest punkt-punkt. Jeśli komunikat jest kierowany do co najmniej jednego pośrednika SOAP (na przykład routera) przed dotarciem do ostatecznego odbiornika, sam komunikat nie jest chroniony, gdy pośrednik odczytuje go z przewodu. Ponadto informacje o uwierzytelnianiu klienta są dostępne tylko dla pierwszego pośrednika i muszą zostać ponownie przesłane do ostatecznego odbiornika w sposób poza pasmem, w razie potrzeby. Dotyczy to nawet sytuacji, gdy cała trasa używa zabezpieczeń SSL między pojedynczymi przeskokami. Ponieważ zabezpieczenia komunikatów działają bezpośrednio z komunikatem i zabezpieczają w nim kod XML, zabezpieczenia pozostają z komunikatem niezależnie od tego, ile pośredników jest zaangażowanych przed dotarciem do ostatecznego odbiorcy. Umożliwia to pełny scenariusz zabezpieczeń.
Zwiększona elastyczność. Części wiadomości, zamiast całej wiadomości, mogą być podpisane lub zaszyfrowane. Oznacza to, że pośrednicy mogą wyświetlać części wiadomości przeznaczone dla nich. Jeśli nadawca musi umieścić część informacji w komunikacie widocznym dla pośredników, ale chce upewnić się, że nie jest on naruszony, może go po prostu podpisać, ale pozostawić go niezaszyfrowany. Ponieważ podpis jest częścią komunikatu, ostateczny odbiornik może sprawdzić, czy informacje w komunikacie zostały odebrane bez zmian. Jeden scenariusz może mieć usługę pośredniczącą SOAP, która kieruje komunikat zgodnie z wartością nagłówka akcji. Domyślnie program WCF nie szyfruje wartości Akcja, ale podpisuje ją, jeśli są używane zabezpieczenia komunikatów. W związku z tym te informacje są dostępne dla wszystkich pośredników, ale nikt nie może go zmienić.
Obsługa wielu transportów. Zabezpieczone komunikaty można wysyłać za pośrednictwem wielu różnych transportów, takich jak nazwane potoki i TCP, bez konieczności polegania na protokole na potrzeby zabezpieczeń. W przypadku zabezpieczeń na poziomie transportu wszystkie informacje o zabezpieczeniach są ograniczone do jednego konkretnego połączenia transportowego i nie są dostępne z samej zawartości komunikatu. Zabezpieczenia komunikatów sprawiają, że komunikat jest bezpieczny niezależnie od transportu używanego do przesyłania komunikatu, a kontekst zabezpieczeń jest bezpośrednio osadzony wewnątrz wiadomości.
Obsługa szerokiego zestawu poświadczeń i oświadczeń. Zabezpieczenia komunikatów są oparte na specyfikacji Zabezpieczeń WS, która zapewnia rozszerzalną strukturę umożliwiającą przesyłanie dowolnego typu oświadczenia wewnątrz komunikatu PROTOKOŁU SOAP. W przeciwieństwie do zabezpieczeń transportu, zestaw mechanizmów uwierzytelniania lub oświadczeń, których można używać, nie jest ograniczony przez możliwości transportu. Zabezpieczenia komunikatów WCF obejmują wiele typów uwierzytelniania i transmisji oświadczeń i można je rozszerzyć w celu obsługi dodatkowych typów w razie potrzeby. Z tych powodów scenariusz poświadczeń federacyjnych nie jest możliwy bez zabezpieczeń komunikatów. Aby uzyskać więcej informacji na temat scenariuszy federacyjnych obsługiwanych przez usługę WCF, zobacz Federacja i Wystawione tokeny.
Porównanie zabezpieczeń komunikatów i transportu
Zalety i wady zabezpieczeń na poziomie transportu
Bezpieczeństwo transportu ma następujące zalety:
Nie wymaga, aby osoby komunikujące się rozumieły pojęcia dotyczące zabezpieczeń na poziomie XML. Może to poprawić współdziałanie, na przykład wtedy, gdy protokół HTTPS jest używany do zabezpieczania komunikacji.
Ogólnie zwiększona wydajność.
Dostępne są akceleratory sprzętowe.
Przesyłanie strumieniowe jest możliwe.
Zabezpieczenia transportu mają następujące wady:
Tylko przeskok do przeskoku.
Ograniczony i niepodważalny zestaw poświadczeń.
Zależne od transportu.
Wady zabezpieczeń na poziomie komunikatów
Zabezpieczenia komunikatów mają następujące wady:
Wydajność
Nie można użyć przesyłania strumieniowego komunikatów.
Wymaga implementacji mechanizmów zabezpieczeń na poziomie XML i obsługi specyfikacji WS-Security. Może to mieć wpływ na współdziałanie.