Udostępnij za pośrednictwem


Rozproszone zabezpieczenia aplikacji

Zabezpieczenia programu Windows Communication Foundation (WCF) są podzielone na trzy główne obszary funkcjonalne: zabezpieczenia transferu, kontrolę dostępu i inspekcję. Zabezpieczenia transferu zapewniają integralność, poufność i uwierzytelnianie. Zabezpieczenia transferu są zapewniane przez jedną z następujących metod: zabezpieczenia transportu, zabezpieczenia komunikatów lub TransportWithMessageCredential.

Aby zapoznać się z omówieniem zabezpieczeń komunikatów WCF, zobacz Omówienie zabezpieczeń. Aby uzyskać więcej informacji na temat pozostałych dwóch elementów zabezpieczeń WCF, zobacz Autoryzacja i inspekcja.

Scenariusze zabezpieczeń transferu

Typowe scenariusze, w których są stosowane zabezpieczenia transferu WCF, obejmują następujące elementy:

  • Bezpieczny transfer przy użyciu systemu Windows. Klient i usługa WCF są wdrażane w domenie systemu Windows (lub lesie systemu Windows). Komunikaty zawierają dane osobowe, więc wymagania obejmują wzajemne uwierzytelnianie klienta i usługi, integralność wiadomości i poufność wiadomości. Ponadto wymagany jest dowód, że wystąpiła określona transakcja, na przykład odbiorca komunikatu powinien rejestrować informacje o podpisie.

  • Bezpieczny transfer przy użyciu protokołów UserName i HTTPS. Aby działać w Internecie, należy utworzyć klienta i usługę WCF. Poświadczenia klienta uwierzytelniają się w bazie danych par nazwy użytkownika/hasła. Usługa jest wdrażana na adresie HTTPS przy użyciu zaufanego certyfikatu Ssl (Secure Sockets Layer). Ponieważ wiadomości są przesyłane przez Internet, klient i usługa muszą być wzajemnie uwierzytelniane, a poufność i integralność wiadomości muszą być zachowywane podczas transferu.

  • Bezpieczny transfer przy użyciu certyfikatów. Aby pracować za pośrednictwem publicznego Internetu, należy opracować klienta i usługę WCF. Klient i usługa mają certyfikaty, których można użyć do zabezpieczenia komunikatów. Klient i usługa używają Internetu do komunikowania się ze sobą i wykonywania transakcji o wysokiej wartości, które wymagają integralności wiadomości, poufności i wzajemnego uwierzytelniania.

Integralność, poufność i uwierzytelnianie

Trzy funkcje — integralność, poufność i uwierzytelnianie — są razem nazywane zabezpieczeniami transferu. Zabezpieczenia transferu zapewniają funkcje, które ułatwiają eliminowanie zagrożeń dla aplikacji rozproszonej. W poniższej tabeli krótko opisano trzy funkcje tworzące zabezpieczenia transferu.

Function opis
Integralność Integralność to pewność, że dane są kompletne i dokładne, zwłaszcza po przejściu od jednego punktu do drugiego i być może odczytane przez wielu aktorów. Integralność musi być utrzymywana, aby zapobiec manipulowaniu danymi i jest zwykle osiągana przez cyfrowe podpisywanie komunikatu.
Poufność Poufność jest zapewnienie, że wiadomość nie została odczytany przez nikogo innego niż zamierzony czytelnik. Na przykład numer karty kredytowej musi być poufny, ponieważ jest wysyłany przez Internet. Poufność jest często zapewniana przez szyfrowanie danych przy użyciu schematu klucza publicznego/klucza prywatnego.
Uwierzytelnianie Uwierzytelnianie to weryfikacja tożsamości żądanej. Na przykład w przypadku korzystania z konta bankowego konieczne jest, aby tylko rzeczywisty właściciel konta mógł wypłacić fundusze. Uwierzytelnianie można zapewnić za pomocą różnych środków. Jedną z typowych metod jest system użytkownika/hasła. Drugim jest użycie certyfikatu X.509 dostarczonego przez inną firmę.

Tryby zabezpieczeń

Program WCF ma kilka trybów zabezpieczeń transferu, które opisano w poniższej tabeli.

Tryb Opis
None Żadne zabezpieczenia nie są zapewniane w warstwie transportu ani w warstwie komunikatów. Żadne ze wstępnie zdefiniowanych powiązań nie używa tego trybu domyślnie z wyjątkiem podstawowego <elementuHttpBinding> lub, w przypadku używania BasicHttpBinding kodu, klasy .
Transport Używa bezpiecznego transportu, takiego jak HTTPS na potrzeby integralności, poufności i wzajemnego uwierzytelniania.
Komunikat Używa zabezpieczeń komunikatów PROTOKOŁU SOAP na potrzeby integralności, poufności i wzajemnego uwierzytelniania. Komunikaty PROTOKOŁU SOAP są zabezpieczone zgodnie ze standardami WS-Security.
Tryb mieszany Używa zabezpieczeń transportu na potrzeby integralności, poufności i uwierzytelniania serwera. Używa zabezpieczeń komunikatów (WS-Security i innych standardów) do uwierzytelniania klienta.

(Wyliczenie dla tego trybu to TransportWithMessageCredential.)
Oba Wykonuje ochronę i uwierzytelnianie na obu poziomach. Ten tryb jest dostępny tylko w elemecie netMsmqBinding>.<

Poświadczenia i zabezpieczenia transferu

Poświadczenie to dane, które są prezentowane w celu ustanowienia tożsamości lub możliwości. Prezentowanie poświadczeń obejmuje przedstawienie zarówno danych, jak i dowodu posiadania danych. Program WCF obsługuje różne typy poświadczeń zarówno na poziomach zabezpieczeń transportu, jak i komunikatów. Można określić typ poświadczeń dla powiązania WCF.

W wielu krajach lub regionach prawo jazdy jest przykładem poświadczenia. Licencja zawiera dane reprezentujące tożsamość i możliwości. Zawiera dowód posiadania w postaci obrazu opętającego. Licencja jest wystawiana przez zaufany urząd, zwykle departament licencjonowania rządowego. Licencja jest zapieczętowana i może zawierać hologram pokazujący, że nie został naruszony ani sfałszowany.

Rozważmy na przykład dwa typy poświadczeń obsługiwanych w programie WCF: nazwy użytkownika i (X.509) poświadczeń certyfikatu.

W przypadku poświadczeń nazwy użytkownika nazwa użytkownika reprezentuje tożsamość, a hasło przedstawia dowód posiadania. Zaufany urząd w tym przypadku to system, który weryfikuje nazwę użytkownika i hasło.

W poświadczeniu certyfikatu można użyć nazwy podmiotu, alternatywnej nazwy podmiotu lub określonych pól w ramach certyfikatu do reprezentowania tożsamości i/lub możliwości oświadczeń. Dowód posiadania danych w poświadczeniu jest ustanawiany przy użyciu skojarzonego klucza prywatnego w celu wygenerowania podpisu.

Aby uzyskać więcej informacji na temat programowania zabezpieczeń transferu i określania poświadczeń, zobacz Powiązania i zabezpieczenia i zachowania zabezpieczeń.

Typy poświadczeń klienta transportu

W poniższej tabeli przedstawiono możliwe wartości używane podczas tworzenia aplikacji korzystającej z zabezpieczeń transferu. Te wartości można użyć w ustawieniach kodu lub powiązania.

Ustawienie opis
None Określa, że klient nie musi prezentować żadnych poświadczeń. Przekłada się to na anonimowego klienta.
Podstawowy Określa uwierzytelnianie podstawowe. Aby uzyskać więcej informacji, zobacz RFC2617 "Uwierzytelnianie HTTP: Uwierzytelnianie podstawowe i szyfrowane".
Szyfrowane Określa uwierzytelnianie szyfrowane. Aby uzyskać więcej informacji, zobacz RFC2617 "Uwierzytelnianie HTTP: Uwierzytelnianie podstawowe i szyfrowane".
Ntlm Określa uwierzytelnianie systemu Windows przy użyciu negocjacji SSPI w domenie systemu Windows.

Negocjacje SSPI skutkują użyciem protokołu Kerberos lub NT LanMan (NTLM).
Windows Określa uwierzytelnianie systemu Windows przy użyciu interfejsu SSPI w domenie systemu Windows. Interfejs SSPI wybiera protokół Kerberos lub NTLM jako usługę uwierzytelniania.

Interfejs SSPI najpierw próbuje protokołu Kerberos; Jeśli to się nie powiedzie, użyje protokołu NTLM.
Certyfikat Przeprowadza uwierzytelnianie klienta przy użyciu certyfikatu, zazwyczaj X.509.

Typy poświadczeń klienta komunikatów

W poniższej tabeli przedstawiono możliwe wartości używane podczas tworzenia aplikacji korzystającej z zabezpieczeń komunikatów. Te wartości można użyć w ustawieniach kodu lub powiązania.

Ustawienie 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. Używa mechanizmu negocjacji SSPI do wybierania z protokołu Kerberos lub NTLM jako usługi uwierzytelniania.
Username Umożliwia usłudze wymaganie uwierzytelnienia klienta przy użyciu poświadczeń nazwy użytkownika. Należy pamiętać, że program WCF nie zezwala na żadne operacje kryptograficzne z nazwą użytkownika, takie jak generowanie podpisu lub szyfrowanie danych. 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.
CardSpace Umożliwia usłudze wymaganie uwierzytelnienia klienta przy użyciu usługi CardSpace.

Poświadczenia programowania

Dla każdego typu poświadczeń klienta model programowania WCF umożliwia określenie wartości poświadczeń i modułów sprawdzania poprawności poświadczeń przy użyciu zachowań usługi i zachowań kanału.

Zabezpieczenia WCF mają dwa typy poświadczeń: zachowania poświadczeń usługi i zachowania poświadczeń kanału. Zachowania poświadczeń w programie WCF określają rzeczywiste dane, a mianowicie poświadczenia używane do spełnienia wymagań dotyczących zabezpieczeń wyrażonych za pośrednictwem powiązań. W programie WCF klasa klienta jest składnikiem czasu wykonywania, który konwertuje między wywołaniem operacji a komunikatami. Wszyscy klienci dziedziczą z ClientBase<TChannel> klasy . Właściwość ClientCredentials w klasie bazowej umożliwia określenie różnych wartości poświadczeń klienta.

W programie WCF zachowania usługi są atrybutami stosowanymi do klasy implementowania kontraktu usługi (interfejsu) w celu programowego sterowania usługą. Klasa ServiceCredentials umożliwia określenie certyfikatów dla poświadczeń usługi i ustawień weryfikacji klienta dla różnych typów poświadczeń klienta.

Model negocjacji dla zabezpieczeń komunikatów

Tryb zabezpieczeń komunikatów umożliwia wykonywanie zabezpieczeń transferu, dzięki czemu poświadczenia usługi są skonfigurowane na kliencie poza pasmem. Jeśli na przykład używasz certyfikatu przechowywanego w magazynie certyfikatów systemu Windows, musisz użyć narzędzia takiego jak przystawka programu Microsoft Management Console (MMC).

Tryb zabezpieczeń komunikatów umożliwia również wykonywanie zabezpieczeń transferu, dzięki czemu poświadczenia usługi są wymieniane z klientem w ramach początkowych negocjacji. Aby włączyć negocjacje, ustaw NegotiateServiceCredential właściwość na true.

Zobacz też