Tryby uwierzytelniania elementu SecurityBindingElement
Program Windows Communication Foundation (WCF) udostępnia kilka trybów, w których klienci i usługi uwierzytelniają się nawzajem. Elementy powiązania zabezpieczeń dla tych trybów uwierzytelniania można tworzyć przy użyciu metod statycznych w SecurityBindingElement klasie lub za pośrednictwem konfiguracji. W tym temacie krótko opisano 18 trybów uwierzytelniania.
Przykład użycia elementu dla jednego z trybów uwierzytelniania można znaleźć w temacie How to: Create a SecurityBindingElement for a Specified Authentication Mode (Jak utworzyć element SecurityBindingElement dla określonego trybu uwierzytelniania).
Podstawowe programowanie konfiguracji
Poniższa procedura opisuje sposób ustawiania trybu uwierzytelniania w pliku konfiguracji.
Aby ustawić tryb uwierzytelniania w konfiguracji
Do elementu bindings> dodaj element <customBinding>.<
Jako element podrzędny dodaj <element powiązania> do
<customBinding>
elementu .<security>
Dodaj element do<binding>
elementu .authenticationMode
Ustaw atrybut na jedną z wartości opisanych poniżej. Na przykład poniższy kod ustawia tryb naAnonymousForCertificate
wartość .<bindings> <customBinding> <binding name="SecureCustomBinding"> <security authenticationMode ="AnonymousForCertificate" /> </binding> </customBinding> </bindings>
Aby ustawić tryb programowo
Określ typ zwracany, który może być jednym z następujących: SymmetricSecurityBindingElement, , TransportSecurityBindingElementAsymmetricSecurityBindingElementlub SecurityBindingElement.
Wywołaj odpowiednią metodę statyczną SecurityBindingElement klasy. Na przykład poniższy kod wywołuje metodę CreateAnonymousForCertificateBindingElement .
SymmetricSecurityBindingElement b = SecurityBindingElement. CreateAnonymousForCertificateBindingElement();
Dim b As SymmetricSecurityBindingElement = _ SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
Użyj elementu powiązania, aby utworzyć powiązanie niestandardowe. Aby uzyskać więcej informacji, zobacz Powiązania niestandardowe.
Opisy trybu
AnonymousForCertificate
W tym trybie uwierzytelniania klient jest anonimowy, a usługa jest uwierzytelniana przy użyciu certyfikatu X.509. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez metodę CreateAnonymousForCertificateBindingElement . Alternatywnie ustaw authenticationMode
atrybut <security>
elementu na AnonymousForCertificate
.
AnonymousForSslNegotiated
W przypadku tego trybu uwierzytelniania klient jest anonimowy, a usługa jest uwierzytelniana przy użyciu certyfikatu X.509 negocjowanego w czasie wykonywania. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez metodę CreateSslNegotiationBindingElement , gdy wartość false
jest przekazywana dla pierwszego parametru. Alternatywnie ustaw authenticationMode
atrybut na AnonymousForSslNegotiated
.
CertificateOverTransport
W przypadku tego trybu uwierzytelniania klient uwierzytelnia się przy użyciu certyfikatu X.509 wyświetlanego w warstwie PROTOKOŁU SOAP jako token pomocniczy; oznacza to token, który podpisuje podpis wiadomości. Usługa jest uwierzytelniana przy użyciu certyfikatu X.509 w warstwie transportu. Element powiązania zabezpieczeń jest TransportSecurityBindingElement zwracany przez metodę CreateCertificateOverTransportBindingElement . Alternatywnie ustaw authenticationMode
atrybut na CertificateOverTransport
.
IssuedToken
W przypadku tego trybu uwierzytelniania klient nie uwierzytelnia się w usłudze, w związku z tym; Zamiast tego klient uwierzytelnia się w usłudze tokenu zabezpieczającego i otrzymuje token SAML, który następnie przedstawia serwerowi, aby udowodnić swoją wiedzę na temat klucza współużytkowanego. Usługa nie jest uwierzytelniana na kliencie, w związku z tym, ale usługa tokenu zabezpieczającego szyfruje klucz wspólny w ramach wystawionego tokenu, aby tylko usługa mogła odszyfrować klucz. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez metodę CreateIssuedTokenBindingElement . Alternatywnie ustaw authenticationMode
atrybut na IssuedToken
.
IssuedTokenForCertificate
W przypadku tego trybu uwierzytelniania klient nie uwierzytelnia się w usłudze, w związku z tym; Zamiast tego klient uwierzytelnia się w usłudze tokenu zabezpieczającego i otrzymuje token SAML, który następnie przedstawia serwerowi, aby udowodnić swoją wiedzę na temat klucza współużytkowanego. Wystawiony token jest wyświetlany w warstwie protokołu SOAP jako token pomocniczy lub token elementu nośnego; oznacza to token, który podpisuje podpis wiadomości. Usługa uwierzytelnia się na kliencie przy użyciu certyfikatu X.509. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez metodę CreateIssuedTokenForCertificateBindingElement . Alternatywnie ustaw authenticationMode
atrybut na IssuedTokenForCertificate
.
IssuedTokenForSslNegotiated
W przypadku tego trybu uwierzytelniania klient nie uwierzytelnia się w usłudze, w związku z tym; Zamiast tego klient uwierzytelnia się w usłudze tokenu zabezpieczającego i otrzymuje token SAML, który następnie przedstawia serwerowi, aby udowodnić swoją wiedzę na temat klucza współużytkowanego. Wystawiony token jest wyświetlany w warstwie protokołu SOAP jako token pomocniczy lub token elementu nośnego; oznacza to token, który podpisuje podpis wiadomości. Usługa jest uwierzytelniana przy użyciu certyfikatu X.509. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez metodę CreateIssuedTokenForSslBindingElement . Alternatywnie ustaw authenticationMode
atrybut na IssuedTokenForSslNegotiated
.
IssuedTokenOverTransport
W przypadku tego trybu uwierzytelniania klient nie uwierzytelnia się w usłudze, w związku z tym; Zamiast tego klient uwierzytelnia się w usłudze tokenu zabezpieczającego i otrzymuje token SAML, który następnie przedstawia serwerowi, aby udowodnić swoją wiedzę na temat klucza współużytkowanego. Wystawiony token jest wyświetlany w warstwie protokołu SOAP jako token pomocniczy lub token elementu nośnego; oznacza to token, który podpisuje podpis wiadomości. Usługa jest uwierzytelniana przy użyciu certyfikatu X.509 w warstwie transportu. Element powiązania zabezpieczeń jest TransportSecurityBindingElement
zwracany przez metodę CreateIssuedTokenOverTransportBindingElement . Alternatywnie ustaw authenticationMode
atrybut na IssuedTokenOverTransport
.
Kerberos
W tym trybie uwierzytelniania klient uwierzytelnia się w usłudze przy użyciu biletu protokołu Kerberos. Ten sam bilet zapewnia również uwierzytelnianie serwera. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement
zwracany przez metodę CreateKerberosBindingElement . Alternatywnie ustaw authenticationMode
atrybut na Kerberos
.
Uwaga
Aby można było używać tego trybu uwierzytelniania, konto usługi musi być skojarzone z nazwą główną usługi (SPN). W tym celu uruchom usługę na koncie USŁUGI SIECIOWEJ lub lokalnym koncie SYSTEMU. Alternatywnie użyj narzędzia SetSpn.exe, aby utworzyć nazwę SPN dla konta usługi. W obu przypadkach klient musi użyć poprawnej nazwy SPN w elemecie servicePrincipalName> lub za pomocą konstruktoraEndpointAddress.< Aby uzyskać więcej informacji, zobacz Service Identity and Authentication (Tożsamość usługi i uwierzytelnianie).
Uwaga
Kerberos
Gdy jest używany tryb uwierzytelniania, Anonymous poziomy personifikacji i Delegation nie są obsługiwane.
KerberosOverTransport
W tym trybie uwierzytelniania klient uwierzytelnia się w usłudze przy użyciu biletu protokołu Kerberos. Token Protokołu Kerberos jest wyświetlany w warstwie protokołu SOAP jako token pomocniczy; oznacza to token, który podpisuje podpis wiadomości. Usługa jest uwierzytelniana przy użyciu certyfikatu X.509 w warstwie transportu. Element powiązania zabezpieczeń jest TransportSecurityBindingElement
zwracany przez metodę CreateKerberosOverTransportBindingElement . Alternatywnie ustaw authenticationMode
atrybut na KerberosOverTransport
.
Uwaga
Aby można było korzystać z tego trybu uwierzytelniania, konto usługi musi być skojarzone z nazwą SPN. W tym celu uruchom usługę na koncie USŁUGI SIECIOWEJ lub lokalnym koncie SYSTEMU. Alternatywnie użyj narzędzia SetSpn.exe, aby utworzyć nazwę SPN dla konta usługi. W obu przypadkach klient musi użyć poprawnej nazwy SPN w elemecie servicePrincipalName> lub za pomocą konstruktoraEndpointAddress.< Aby uzyskać więcej informacji, zobacz Service Identity and Authentication (Tożsamość usługi i uwierzytelnianie).
MutualCertificate
W przypadku tego trybu uwierzytelniania klient uwierzytelnia się przy użyciu certyfikatu X.509 wyświetlanego w warstwie PROTOKOŁU SOAP jako token pomocniczy; oznacza to token, który podpisuje podpis wiadomości. Usługa jest również uwierzytelniana przy użyciu certyfikatu X.509. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement
zwracany przez metodę CreateMutualCertificateBindingElement . Alternatywnie ustaw authenticationMode
atrybut na MutualCertificate
.
MutualCertificateDuplex
W przypadku tego trybu uwierzytelniania klient uwierzytelnia się przy użyciu certyfikatu X.509 wyświetlanego w warstwie PROTOKOŁU SOAP jako token pomocniczy; oznacza to token, który podpisuje podpis wiadomości. Usługa jest również uwierzytelniana przy użyciu certyfikatu X.509. Powiązanie jest AsymmetricSecurityBindingElement
zwracane przez metodę CreateMutualCertificateDuplexBindingElement . Alternatywnie ustaw authenticationMode
atrybut na MutualCertificateDuplex
.
MutualSslNegotiated
W tym trybie uwierzytelniania klient i usługa uwierzytelniają się przy użyciu certyfikatów X.509. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement
zwracany przez metodę CreateSslNegotiationBindingElement , gdy wartość true
jest przekazywana dla pierwszego parametru. Alternatywnie ustaw authenticationMode
atrybut na MutualSslNegotiated
.
SecureConversation
Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement
zwracany przez metodę CreateSecureConversationBindingElement . Ta metoda przyjmuje SecurityBindingElement jako parametr, który jest używany podczas inicjowania w celu ustanowienia bezpiecznej sesji. Alternatywnie ustaw authenticationMode
atrybut na SecureConversation
.
Jeśli nie określono powiązania bootstrap, SspiNegotiated
tryb uwierzytelniania jest używany do uruchamiania.
SspiNegotiation
W przypadku tego trybu uwierzytelniania protokół negocjacji jest używany do przeprowadzania uwierzytelniania klienta i serwera. Kerberos jest używany, jeśli to możliwe; w przeciwnym razie jest używany NT LanMan (NTLM). Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement
zwracany przez metodę CreateSspiNegotiationBindingElement . Alternatywnie ustaw authenticationMode
atrybut na SspiNegotiated
.
SspiNegotiatedOverTransport
W przypadku tego trybu uwierzytelniania protokół negocjacji jest używany do przeprowadzania uwierzytelniania klienta i serwera. Protokół Kerberos jest używany, jeśli to możliwe; w przeciwnym razie jest używany protokół NTLM. Wynikowy token jest wyświetlany w warstwie PROTOKOŁU SOAP jako token pomocniczy; oznacza to token, który podpisuje podpis wiadomości. Usługa jest dodatkowo uwierzytelniana w warstwie transportu przez certyfikat X.509. Element powiązania zabezpieczeń jest TransportSecurityBindingElement
zwracany przez metodę CreateSspiNegotiationOverTransportBindingElement . Alternatywnie ustaw authenticationMode
atrybut na SspiNegotiatedOverTransport
.
UserNameForCertificate
W przypadku tego trybu uwierzytelniania klient uwierzytelnia się w usłudze przy użyciu tokenu nazwy użytkownika wyświetlanego w warstwie protokołu SOAP jako podpisanego tokenu pomocniczego; oznacza to token podpisany przez podpis wiadomości. Usługa uwierzytelnia się na kliencie przy użyciu certyfikatu X.509. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement
zwracany przez metodę CreateUserNameForCertificateBindingElement . Alternatywnie ustaw authenticationMode
atrybut na UserNameForCertificate
.
UserNameForCertificate
W trybie uwierzytelniania zarówno klient, jak i usługa muszą używać programu WS-Security 1.1.
UserNameForSslNegotiated
W tym trybie uwierzytelniania klient jest uwierzytelniany przy użyciu tokenu nazwy użytkownika, który jest wyświetlany w warstwie PROTOKOŁU SOAP jako podpisany token pomocniczy; oznacza to token podpisany przez podpis wiadomości. Usługa jest uwierzytelniana przy użyciu certyfikatu X.509. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement
zwracany przez metodę CreateUserNameForSslBindingElement . Alternatywnie ustaw authenticationMode
atrybut na UserNameForSslNegotiated
.
UserNameOverTransport
W tym trybie uwierzytelniania klient uwierzytelnia się przy użyciu tokenu nazwy użytkownika wyświetlanego w warstwie PROTOKOŁU SOAP jako podpisanego tokenu pomocniczego; oznacza to token podpisany przez podpis wiadomości. Usługa jest uwierzytelniana przy użyciu certyfikatu X.509 w warstwie transportu. Element powiązania zabezpieczeń jest TransportSecurityBindingElement
zwracany przez metodę CreateUserNameOverTransportBindingElement . Alternatywnie ustaw authenticationMode
atrybut na UserNameOverTransport
.