Udostępnij za pośrednictwem


Instrukcje: Tworzenie poświadczeń pomocniczych

Istnieje możliwość posiadania niestandardowego schematu zabezpieczeń, który wymaga więcej niż jednego poświadczenia. Na przykład usługa może zażądać od klienta nie tylko nazwy użytkownika i hasła, ale także poświadczeń, które dowodzą, że klient ma ponad 18 lat. Drugie poświadczenie to poświadczenia pomocnicze. W tym temacie wyjaśniono, jak zaimplementować takie poświadczenia w kliencie programu Windows Communication Foundation (WCF).

Uwaga

Specyfikacja obsługi poświadczeń jest częścią specyfikacji WS-SecurityPolicy. Aby uzyskać więcej informacji, zobacz Specyfikacje zabezpieczeń usług sieci Web.

Obsługa tokenów

Krótko mówiąc, gdy używasz zabezpieczeń komunikatów, podstawowe poświadczenia są zawsze używane do zabezpieczania komunikatu (na przykład certyfikatU X.509 lub biletu Protokołu Kerberos).

Zgodnie ze specyfikacją powiązanie zabezpieczeń używa tokenów do zabezpieczenia wymiany komunikatów . Token jest reprezentacją poświadczeń zabezpieczeń.

Powiązanie zabezpieczeń używa tokenu podstawowego zidentyfikowanego w zasadach powiązania zabezpieczeń w celu utworzenia podpisu. Ten podpis jest określany jako podpis wiadomości.

Dodatkowe tokeny można określić w celu rozszerzenia oświadczeń dostarczonych przez token skojarzony z podpisem komunikatu.

Aprowizowanie, podpisywanie i szyfrowanie

Poświadczenie pomocnicze powoduje przekazanie tokenu pomocniczego wewnątrz komunikatu. Specyfikacja WS-SecurityPolicy definiuje cztery sposoby dołączania tokenu pomocniczego do komunikatu, zgodnie z opisem w poniższej tabeli.

Purpose opis
Podpisane Token pomocniczy jest dołączany do nagłówka zabezpieczeń i jest podpisany przez podpis wiadomości.
Popierając Token popierający podpis wiadomości podpisuje.
Podpisane i endoring Podpisane tokeny aproryzowania podpisują cały ds:Signature element wygenerowany na podstawie podpisu wiadomości i są podpisywane przez ten podpis wiadomości. Oznacza to, że oba tokeny (token używany do podpisu wiadomości i podpisany token aprowizowania) podpisują się nawzajem.
Podpisane i szyfrujące Podpisane, zaszyfrowane tokeny pomocnicze są podpisane tokeny pomocnicze, które są również szyfrowane, gdy są wyświetlane w pliku wsse:SecurityHeader.

Poświadczenia pomocnicze programowania

Aby utworzyć usługę korzystającą z tokenów pomocniczych, należy utworzyć <element customBinding>. (Aby uzyskać więcej informacji, zobacz Instrukcje: tworzenie powiązania niestandardowego przy użyciu elementu SecurityBindingElement).

Pierwszym krokiem podczas tworzenia powiązania niestandardowego jest utworzenie elementu powiązania zabezpieczeń, który może być jednym z trzech typów:

Wszystkie klasy dziedziczą z SecurityBindingElementklasy , która zawiera cztery odpowiednie właściwości:

Zakresy

Istnieją dwa zakresy obsługi poświadczeń:

  • Punkty końcowe obsługujące tokeny obsługują wszystkie operacje punktu końcowego. Oznacza to, że poświadczenie reprezentowane przez token pomocniczy może być używane za każdym razem, gdy są wywoływane dowolne operacje punktu końcowego.

  • Operacja obsługi tokenów obsługuje tylko określoną operację punktu końcowego.

Zgodnie z nazwami właściwości, poświadczenia pomocnicze mogą być wymagane lub opcjonalne. Oznacza to, że jeśli jest używane poświadczenie pomocnicze, chociaż nie jest konieczne, ale uwierzytelnianie nie zakończy się niepowodzeniem, jeśli nie jest obecny.

z konkretnym obiektem

Aby utworzyć powiązanie niestandardowe zawierające poświadczenia pomocnicze

  1. Utwórz element powiązania zabezpieczeń. Poniższy przykład umożliwia utworzenie elementu SymmetricSecurityBindingElement z trybem UserNameForCertificate uwierzytelniania. Użyj metody CreateUserNameForCertificateBindingElement.

  2. Dodaj parametr pomocniczy do kolekcji typów zwracanych przez odpowiednią właściwość (Endorsing, Signed, SignedEncryptedlub SignedEndorsed). Typy w System.ServiceModel.Security.Tokens przestrzeni nazw obejmują często używane typy, takie jak X509SecurityTokenParameters.

Przykład

opis

Poniższy przykład tworzy wystąpienie klasy i dodaje wystąpienie SymmetricSecurityBindingElementKerberosSecurityTokenParameters klasy do kolekcji zwróconą właściwość Endorsing.

Kod

public static Binding CreateMultiFactorAuthenticationBinding()
{
    HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();

    // The message security binding element will be configured to require 2 tokens:
    // 1) A user name/password encrypted with the service token.
    // 2) A client certificate used to sign the message.

    // Instantiate a binding element that will require the user name/password token
    // in the message (encrypted with the server certificate).
    SymmetricSecurityBindingElement messageSecurity = SecurityBindingElement.CreateUserNameForCertificateBindingElement();

    // Create supporting token parameters for the client X.509 certificate.
    X509SecurityTokenParameters clientX509SupportingTokenParameters = new X509SecurityTokenParameters();
    // Specify that the supporting token is passed in the message send by the client to the service.
    clientX509SupportingTokenParameters.InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient;
    // Turn off derived keys.
    clientX509SupportingTokenParameters.RequireDerivedKeys = false;
    // Augment the binding element to require the client's X.509 certificate as an
    // endorsing token in the message.
    messageSecurity.EndpointSupportingTokenParameters.Endorsing.Add(clientX509SupportingTokenParameters);

    // Create a CustomBinding based on the constructed security binding element.
    return new CustomBinding(messageSecurity, httpTransport);
}

Zobacz też