Vorgehensweise: Verwenden mehrerer Sicherheitstokens desselben TypsHow to: Use Multiple Security Tokens of the Same Type

  • In .NET Framework.NET Framework 3.0 enthielt eine Clientnachricht nur ein Token eines beliebigen angegebenen Typs.In .NET Framework.NET Framework 3.0, a client message only contained one token of any given type. Jetzt können Clientnachrichten mehrere Token eines Typs enthalten.Now client messages can contain multiple tokens of a type. In diesem Thema wird das Einfügen mehrerer Token desselben Typs in eine Clientnachricht erläutert.This topic shows how to include multiple tokens of the same type in a client message.

  • Ein Dienst kann nicht auf diese Weise konfiguriert werden, da ein Dienst lediglich ein einzelnes unterstützendes Token enthalten kann.Note that you cannot configure a service in this way: a service can contain only one supporting token.

Gewusst wie: Verwenden mehrerer Sicherheitstokens desselben TypsTo use multiple security tokens of the same type

  1. Erstellen Sie eine leere auszufüllende Bindungselementauflistung.Create an empty binding element collection to be populated.

    // 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.Create a SecurityBindingElement by calling CreateMutualCertificateBindingElement.

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

    SupportingTokenParameters supportParams = new SupportingTokenParameters();
    
  4. Fügen Sie der Auflistung SAML-Tokens hinzu.Add SAML tokens to the collection.

    // 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.Add the collection to the SecurityBindingElement.

    ((SymmetricSecurityBindingElement)sbe).OperationSupportingTokenParameters.Add("*", supportParams);
    
  6. Fügen Sie der Bindungselementauflistung Bindungselemente hinzu.Add binding elements to the binding element collection.

    bec.Add(sbe);
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    
  7. Geben Sie aus der Bindungselementauflistung eine neue benutzerdefinierte Bindung zurück.Return a new custom binding created from the binding element collection.

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

BeispielExample

Nachfolgend ist die gesamte Methode aufgeführt, die durch die vorherige Prozedur beschrieben wird.The following is the entire method described by the preceding procedure.

// 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);
}

Siehe auchSee Also

SicherheitsarchitekturSecurity Architecture