Wiązania i zabezpieczenia
Powiązania dostarczane przez system zawarte w programie Windows Communication Foundation (WCF) oferują szybki sposób programowania aplikacji WCF. Z jednym wyjątkiem wszystkie powiązania mają włączony domyślny schemat zabezpieczeń. Ten temat ułatwia wybranie odpowiedniego powiązania dla Twoich potrzeb dotyczących zabezpieczeń.
Aby zapoznać się z omówieniem zabezpieczeń WCF, zobacz Omówienie zabezpieczeń. Aby uzyskać więcej informacji na temat programowania WCF przy użyciu powiązań, zobacz Programowanie zabezpieczeń WCF.
Jeśli wybrano już powiązanie, możesz dowiedzieć się więcej o zachowaniach czasu wykonywania skojarzonych z zabezpieczeniami w obszarze Zachowania zabezpieczeń.
Niektóre funkcje zabezpieczeń nie są programowalne przy użyciu powiązań dostarczanych przez system. Aby uzyskać większą kontrolę przy użyciu powiązania niestandardowego, zobacz Funkcje zabezpieczeń z powiązaniami niestandardowymi.
Funkcje zabezpieczeń powiązań
Program WCF zawiera wiele powiązań dostarczanych przez system, które spełniają większość potrzeb. Jeśli określone powiązanie nie jest wystarczające, można również utworzyć powiązanie niestandardowe. Aby uzyskać listę powiązań dostarczanych przez system, zobacz Powiązania dostarczone przez system. Aby uzyskać więcej informacji na temat powiązań niestandardowych, zobacz Powiązania niestandardowe.
Każde powiązanie w programie WCF ma dwie formy: jako interfejs API i jako element XML używany w pliku konfiguracji. Na przykład WSHttpBinding
element (API) ma odpowiednik w usłudze <wsHttpBinding>.
W poniższej sekcji wymieniono obie formularze dla każdego powiązania i podsumowano funkcje zabezpieczeń.
BasicHttp
W kodzie użyj BasicHttpBinding klasy ; w konfiguracji użyj <podstawowejHttpBinding>.
To powiązanie jest przeznaczone do użycia z szeregiem istniejących technologii, w tym następujących:
ASP.NET usługi sieci Web (ASMX), wersja 1.
Ulepszenia usług sieci Web (WSE).
Profil podstawowy zdefiniowany w specyfikacjihttps://go.microsoft.com/fwlink/?LinkId=38955 współdziałania usług sieci Web (WS-I).
Podstawowy profil zabezpieczeń zdefiniowany w programie WS-I.
Domyślnie to powiązanie nie jest bezpieczne. Jest przeznaczony do współdziałania z usługami ASMX. Po włączeniu zabezpieczeń powiązanie jest przeznaczone do bezproblemowego współdziałania z mechanizmami zabezpieczeń usług Internet Information Services (IIS), takimi jak uwierzytelnianie podstawowe, skrót i zintegrowane zabezpieczenia systemu Windows. Aby uzyskać więcej informacji, zobacz Transport Security Overview (Omówienie zabezpieczeń transportu). To powiązanie obsługuje następujące elementy:
Zabezpieczenia transportu HTTPS.
Uwierzytelnianie podstawowe HTTP.
Zabezpieczenia usług WS.
Aby uzyskać więcej informacji, zobacz BasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialTypei BasicHttpSecurityMode.
WSHttpBinding
W kodzie użyj WSHttpBinding klasy ; w konfiguracji użyj <elementu wsHttpBinding>.
Domyślnie to powiązanie implementuje specyfikację Zabezpieczeń WS-Security i zapewnia współdziałanie z usługami, które implementują specyfikacje usług WS-*. Obsługuje on następujące elementy:
Zabezpieczenia transportu HTTPS.
Zabezpieczenia usług WS.
Ochrona transportu HTTPS z zabezpieczeniami poświadczeń komunikatów PROTOKOŁU SOAP na potrzeby uwierzytelniania obiektu wywołującego.
Aby uzyskać więcej informacji, zobacz WSHttpSecurity, , MessageSecurityOverHttp, MessageCredentialType, SecurityModeHttpTransportSecurity, , HttpClientCredentialType, i HttpProxyCredentialType.
WSDualHttpBinding
W kodzie użyj WSDualHttpBinding klasy ; w konfiguracji użyj elementu <wsDualHttpBinding>.
To powiązanie zostało zaprojektowane w celu włączenia aplikacji usług dwukierunkowych. To powiązanie implementuje specyfikację WS-Security dla zabezpieczeń opartych na komunikatach. Zabezpieczenia transportu nie są dostępne. Domyślnie udostępnia ona następujące funkcje:
Implementuje niezawodną obsługę komunikatów WS w celu zapewnienia niezawodności.
Implementuje zabezpieczenia WS-Security na potrzeby zabezpieczeń transferu i uwierzytelniania.
Używa protokołu HTTP do dostarczania komunikatów.
Używa kodowania komunikatów tekstowych/XML.
Przy użyciu zabezpieczeń WS-Security (zabezpieczenia w warstwie komunikatów) powiązanie umożliwia skonfigurowanie następujących parametrów:
Zestaw algorytmów zabezpieczeń do określania algorytmu kryptograficznego.
Opcje powiązania dla następujących elementów:
Dostarczanie poświadczeń usługi dostępnych poza pasmem na kliencie.
Dostarczanie poświadczeń usługi wynegocjowanych z usługi w ramach konfiguracji kanału.
Aby uzyskać więcej informacji, zobacz tematy WSDualHttpSecurity oraz WSDualHttpSecurityMode.
Nettcpbinding
W kodzie użyj NetTcpBinding klasy ; w konfiguracji użyj <polecenia netTcpBinding>.
To powiązanie jest zoptymalizowane pod kątem komunikacji między maszynami. Domyślnie ma następujące cechy:
Implementuje zabezpieczenia warstwy transportu.
Wykorzystuje zabezpieczenia systemu Windows do uwierzytelniania i zabezpieczeń transferu.
Używa protokołu TCP do transportu.
Implementuje kodowanie komunikatów binarnych.
Implementuje niezawodną obsługę komunikatów WS.
Dostępne są następujące opcje:
Zabezpieczenia warstwy komunikatów (przy użyciu usługi WS-Security).
Zabezpieczenia transportu z poświadczeniami wiadomości — poufność i integralność zapewniana przez protokół Transport Layer Security (TLS) za pośrednictwem protokołu TCP oraz poświadczenia autoryzacji udostępniane przez usługę WS-Security.
Aby uzyskać więcej informacji, zobacz NetTcpSecurity, , TcpTransportSecurityTcpClientCredentialType, MessageSecurityOverTcp, i MessageCredentialType.
NetNamedPipeBinding
W kodzie użyj NetNamedPipeBinding klasy ; w konfiguracji użyj <polecenia netNamedPipeBinding>.
To powiązanie jest zoptymalizowane pod kątem komunikacji między procesami (zwykle na tej samej maszynie). Domyślnie to powiązanie ma następujące cechy:
Używa zabezpieczeń transportu do transferu i uwierzytelniania komunikatów.
Używa nazwanych potoków do dostarczania komunikatów.
Implementuje kodowanie komunikatów binarnych.
Szyfrowanie i podpisywanie komunikatów.
Dostępne są następujące opcje:
- Uwierzytelnianie przy użyciu zabezpieczeń systemu Windows.
Aby uzyskać więcej informacji, zobacz tematy NetNamedPipeSecurity, NetNamedPipeSecurityMode oraz NamedPipeTransportSecurity.
Msmqintegrationbinding
W kodzie użyj MsmqIntegrationBinding klasy ; w konfiguracji użyj <elementu msmqIntegrationBinding>.
To powiązanie jest zoptymalizowane pod kątem tworzenia klientów i usług WCF, które współdziałają z punktami końcowymi kolejkowania komunikatów firmy Microsoft (MSMQ) innych niż WCF.
Domyślnie to powiązanie używa zabezpieczeń transportu i zapewnia następujące cechy zabezpieczeń:
Zabezpieczenia można wyłączyć (Brak).
Zabezpieczenia transportu MSMQ (Transport).
Aby uzyskać więcej informacji, zobacz tematy NetMsmqSecurity oraz NetMsmqSecurityMode.
Netmsmqbinding
W kodzie użyj NetMsmqBinding klasy ; w konfiguracji użyj <polecenia netMsmqBinding>.
To powiązanie jest przeznaczone do użycia podczas tworzenia usług WCF, które wymagają obsługi komunikatów w kolejce MSMQ.
Domyślnie to powiązanie używa zabezpieczeń transportu i zapewnia następujące cechy zabezpieczeń:
Zabezpieczenia można wyłączyć (Brak).
Zabezpieczenia transportu MSMQ (Transport).
Zabezpieczenia komunikatów oparte na protokole SOAP (Message).
Równoczesne zabezpieczenia transportu i wiadomości (oba).
Obsługiwane typy poświadczeń klienta: None, Windows, UserName, Certificate, IssuedToken.
Poświadczenie Certificate jest obsługiwane tylko wtedy, gdy tryb zabezpieczeń jest ustawiony na Both wartość lub Message.
Aby uzyskać więcej informacji, zobacz tematy MessageSecurityOverMsmq oraz MsmqTransportSecurity.
WSFederationHttpBinding
W kodzie użyj WSFederationHttpBinding klasy ; w konfiguracji użyj <klasy wsFederationHttpBinding>.
Domyślnie to powiązanie używa zabezpieczeń WS-Security (zabezpieczenia warstwy komunikatów).
Aby uzyskać więcej informacji, zobacz Federacja, WSFederationHttpSecurityi WSFederationHttpSecurityMode.
Powiązania niestandardowe
Jeśli żadne z powiązań dostarczonych przez system nie spełnia Twoich wymagań, możesz utworzyć niestandardowe powiązanie z niestandardowym elementem powiązania zabezpieczeń. Aby uzyskać więcej informacji, zobacz Funkcje zabezpieczeń za pomocą powiązań niestandardowych.
Opcje powiązania
Poniższa tabela zawiera podsumowanie funkcji oferowanych w ustawieniu trybu zabezpieczeń, czyli zawiera listę funkcji dostępnych, gdy tryb zabezpieczeń jest ustawiony na Transport
, Message
lub TransportWithMessageCredential
. Ta tabela ułatwia znajdowanie funkcji zabezpieczeń, których wymaga aplikacja.
Ustawienie | Funkcje |
---|---|
Transport | Uwierzytelnianie serwera Uwierzytelnianie klienta Zabezpieczenia typu punkt-punkt Współdziałanie Przyspieszanie sprzętowe Wysoka przepływność Bezpieczna zapora Aplikacje o dużym opóźnieniu Ponowne szyfrowanie wielu przeskoków |
Komunikat | Uwierzytelnianie serwera Uwierzytelnianie klienta Kompleksowe zabezpieczenia Współdziałanie Bogatych roszczeń Federacja Uwierzytelnianie wieloskładnikowe Tokeny niestandardowe Usługa notary/sygnatura czasowa Aplikacje o dużym opóźnieniu Trwałość podpisów wiadomości |
Transportwithmessagecredential | Uwierzytelnianie serwera Uwierzytelnianie klienta Zabezpieczenia typu punkt-punkt Współdziałanie Przyspieszanie sprzętowe Wysoka przepływność Zaawansowane oświadczenia klienta Federacja Uwierzytelnianie wieloskładnikowe Tokeny niestandardowe Bezpieczna zapora Aplikacje o dużym opóźnieniu Ponowne szyfrowanie wielu przeskoków |
W poniższej tabeli wymieniono powiązania, które obsługują różne ustawienia trybu. Wybierz powiązanie z tabeli, aby użyć go do utworzenia punktu końcowego usługi.
Wiązanie | Obsługa trybu transportu | Obsługa trybu komunikatów | Obsługa obiektu TransportWithMessageCredential |
---|---|---|---|
BasicHttpBinding |
Tak | Tak | Tak |
WSHttpBinding |
Tak | Tak | Tak |
WSDualHttpBinding |
Nie | Tak | Nie |
NetTcpBinding |
Tak | Tak | Tak |
NetNamedPipeBinding |
Tak | Nie. | Nie. |
NetMsmqBinding |
Tak | Tak | Nie |
MsmqIntegrationBinding |
Tak | Nie. | Nie. |
wsFederationHttpBinding |
Nie. | Tak | Tak |
Poświadczenia transportu w powiązaniach
W poniższej tabeli wymieniono typy poświadczeń klienta dostępne w przypadku korzystania z BasicHttpBinding
trybu zabezpieczeń transportu lub WSHttpBinding
w trybie zabezpieczeń transportu.
Type | Opis |
---|---|
None | Określa, że klient nie musi prezentować żadnych poświadczeń. Przekłada się to na anonimowego klienta. |
Podstawowy | Uwierzytelnianie podstawowe. Aby uzyskać więcej informacji, zobacz RFC 2617 — Uwierzytelnianie HTTP: uwierzytelnianie podstawowe i szyfrowane dostępne pod adresem https://go.microsoft.com/fwlink/?LinkId=84023. |
Szyfrowane | Uwierzytelnianie szyfrowane. Aby uzyskać więcej informacji, zobacz RFC 2617 — Uwierzytelnianie HTTP: uwierzytelnianie podstawowe i szyfrowane dostępne pod adresem https://go.microsoft.com/fwlink/?LinkId=84023. |
NTLM | Uwierzytelnianie NT LAN Manager (NTLM). |
Windows | Uwierzytelnianie systemu Windows. |
Certyfikat | Uwierzytelnianie wykonywane przy użyciu certyfikatu. |
Issuedtoken | Umożliwia usłudze wymaganie uwierzytelnienia klienta przy użyciu tokenu wystawionego przez usługę tokenu zabezpieczającego lub przez usługę CardSpace. Aby uzyskać więcej informacji, zobacz Federacja i Wystawione tokeny. |
Poświadczenia klienta komunikatów w powiązaniach
W poniższej tabeli wymieniono typy poświadczeń klienta dostępne podczas korzystania z powiązania w trybie zabezpieczeń komunikatów.
Type | Opis |
---|---|
None | Umożliwia usłudze interakcję z klientami anonimowymi. |
Windows | Umożliwia wymianę komunikatów protokołu SOAP w kontekście uwierzytelnionego poświadczenia systemu Windows. |
UserName | Umożliwia usłudze wymaganie uwierzytelnienia klienta przy użyciu poświadczeń nazwy użytkownika. Należy pamiętać, że gdy tryb zabezpieczeń jest ustawiony na TransportWithMessageCredential wartość , program WCF nie obsługuje wysyłania skrótu hasła lub wyprowadzania kluczy przy użyciu hasła i używania takich kluczy w przypadku zabezpieczeń trybu komunikatów. W związku z tym program WCF wymusza zabezpieczenie transportu podczas korzystania z poświadczeń nazwy użytkownika. |
Certyfikat | Umożliwia usłudze wymaganie uwierzytelnienia klienta przy użyciu certyfikatu. |
Issuedtoken | Umożliwia usłudze używanie usługi tokenu zabezpieczającego do dostarczania tokenu niestandardowego. |