Vorgehensweise: Verwenden mehrerer Sicherheitstokens desselben Typs

  • In .NET Framework 3.0 enthielt eine Clientnachricht nur ein Token eines beliebigen angegebenen Typs. Jetzt können Clientnachrichten mehrere Token eines Typs enthalten. In diesem Thema wird das Einfügen mehrerer Token desselben Typs in eine Clientnachricht erläutert.

  • Ein Dienst kann nicht auf diese Weise konfiguriert werden, da ein Dienst lediglich ein einzelnes unterstützendes Token enthalten kann.

Gewusst wie: Verwenden mehrerer Sicherheitstokens desselben Typs

  1. Erstellen Sie eine leere auszufüllende Bindungselementauflistung.

    // Create an empty BindingElementCollection to populate,
    // then create a custom binding from it.
    BindingElementCollection bec = new BindingElementCollection();
    
  2. Erstellen Sie SecurityBindingElement durch Aufrufen von CreateMutualCertificateBindingElement.

    SecurityBindingElement sbe = SecurityBindingElement.CreateMutualCertificateBindingElement();
    
  3. Erstellen Sie eine SupportingTokenParameters-Auflistung.

    SupportingTokenParameters supportParams = new SupportingTokenParameters();
    
  4. Fügen Sie der Auflistung SAML-Tokens hinzu.

    // Two supporting SAML tokens are being added.
    supportParams.SignedEndorsing.Add(new IssuedSecurityTokenParameters("samlTokenType", issuerEndpointAddress1, issuerBinding1));
    supportParams.SignedEndorsing.Add(new IssuedSecurityTokenParameters("samlTokenType", issuerEndpointAddress2, issuerBinding2));
    
  5. Fügen Sie die Auflistung SecurityBindingElement hinzu.

    ((SymmetricSecurityBindingElement)sbe).OperationSupportingTokenParameters.Add("*", supportParams);
    
  6. Fügen Sie der Bindungselementauflistung Bindungselemente hinzu.

    bec.Add(sbe);
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    
  7. Geben Sie aus der Bindungselementauflistung eine neue benutzerdefinierte Bindung zurück.

    // Create a CustomBinding and return it; otherwise, return null.
    return new CustomBinding(bec);
    

Beispiel

Nachfolgend ist die gesamte Methode aufgeführt, die durch die vorherige Prozedur beschrieben wird.

// This method creates a CustomBinding that includes two tokens of a given type.
public static Binding CreateCustomBinding(EndpointAddress issuerEndpointAddress1, Binding issuerBinding1, EndpointAddress issuerEndpointAddress2, Binding issuerBinding2)
{
    // Create an empty BindingElementCollection to populate,
    // then create a custom binding from it.
    BindingElementCollection bec = new BindingElementCollection();

    SecurityBindingElement sbe = SecurityBindingElement.CreateMutualCertificateBindingElement();

    SupportingTokenParameters supportParams = new SupportingTokenParameters();

    // Two supporting SAML tokens are being added.
    supportParams.SignedEndorsing.Add(new IssuedSecurityTokenParameters("samlTokenType", issuerEndpointAddress1, issuerBinding1));
    supportParams.SignedEndorsing.Add(new IssuedSecurityTokenParameters("samlTokenType", issuerEndpointAddress2, issuerBinding2));

    ((SymmetricSecurityBindingElement)sbe).OperationSupportingTokenParameters.Add("*", supportParams);

    bec.Add(sbe);
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());

    // Create a CustomBinding and return it; otherwise, return null.
    return new CustomBinding(bec);
}