Zagadnienia dotyczące zabezpieczeń bezpiecznych sesji
Podczas implementowania bezpiecznych sesji należy wziąć pod uwagę następujące elementy, które mają wpływ na zabezpieczenia. Aby uzyskać więcej informacji na temat zagadnień dotyczących zabezpieczeń, zobacz Zagadnienia dotyczące zabezpieczeń i Najlepsze rozwiązania dotyczące zabezpieczeń.
Bezpieczne sesje i metadane
Po ustanowieniu bezpiecznej sesji i RequireCancellation ustawieniu właściwości na false
, program Windows Communication Foundation (WCF) wysyła mssp:MustNotSendCancel
asercji jako część metadanych w dokumencie Web Services Description Language (WSDL) dla punktu końcowego usługi. Asercji mssp:MustNotSendCancel
informuje klientów, że usługa nie odpowiada na żądania anulowania bezpiecznej sesji. Gdy właściwość jest ustawiona RequireCancellation na true
wartość , usługa WCF nie emituje mssp:MustNotSendCancel
asercji w dokumencie WSDL. Oczekuje się, że klienci będą wysyłać żądanie anulowania do usługi, gdy nie wymagają już bezpiecznej sesji. Gdy klient jest generowany przy użyciu narzędzia ServiceModel Metadata Tool (Svcutil.exe), kod klienta odpowiednio reaguje na obecność lub brak mssp:MustNotSendCancel
potwierdzenia.
Bezpieczne konwersacje i niestandardowe tokeny
Istnieją pewne problemy z mieszaniem tokenów niestandardowych i kluczy pochodnych ze względu na sposób jego definiowania w specyfikacji WS-SecureConversation. Specyfikacja informuje, że wsse:SecurityTokenReference
jest to opcjonalny element, który odwołuje się do tokenu pochodnego: "/wsc:DerivedKeyToken/wsse:SecurityTokenReference
Ten opcjonalny element służy do określania tokenu kontekstu zabezpieczeń, tokenu zabezpieczającego lub klucza współużytkowanego/klucza tajnego używanego do wyprowadzania. Jeśli nie zostanie określony, przyjmuje się, że odbiorca może określić klucz współużytkowany z kontekstu wiadomości. Jeśli nie można określić kontekstu, należy podnieść błąd, taki jak wsc:UnknownDerivationSource
powinien zostać zgłoszony.
Oznacza to, że jeśli chcesz, aby token niestandardowy został uzyskany, należy owinąć jego typ klauzuli w elemecie SecurityTokenReference
. Istnieje możliwość wyłączenia wyprowadzania, ale wartością domyślną jest wyprowadzanie kluczy. Jeśli nie uda ci się opakować klucza, serializowanie tokenu klucza pochodnego zakończy się powodzeniem, ale próba deserializacji zgłosi wyjątek.