Partager via


Comment : utiliser plusieurs jetons de sécurité du même type

  • Dans le .NET Framework 3.0, un message client ne pouvait contenir qu'un jeton d'un type donné. Désormais, les messages peuvent contenir plusieurs jetons d'un type donné. Cette rubrique explique comment inclure plusieurs jetons du même type dans un message client.

  • Notez que vous ne pouvez pas configurer un service ainsi : un service peut contenir un seul jeton de prise en charge.

Pour utiliser plusieurs jetons de sécurité du même type

  1. Créez une collection d'éléments de liaison vide à remplir.

    // Create an empty BindingElementCollection to populate, 
    // then create a custom binding from it.
    BindingElementCollection bec = new BindingElementCollection();
    
  2. Créez un SecurityBindingElement en appelant CreateMutualCertificateBindingElement.

    SecurityBindingElement sbe = SecurityBindingElement.CreateMutualCertificateBindingElement();
    
  3. Créez une collection SupportingTokenParameters.

    SupportingTokenParameters supportParams = new SupportingTokenParameters();
    
  4. Ajoutez des jetons SAML à la 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. Ajoutez la collection à SecurityBindingElement.

    ((SymmetricSecurityBindingElement)sbe).OperationSupportingTokenParameters.Add("*", supportParams);
    
  6. Ajoutez des éléments de liaison à la collection d'éléments de liaison.

    bec.Add(sbe);
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    
  7. Retournez une nouvelle liaison personnalisée créée à partir de la collection d'éléments de liaison.

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

Exemple

Vous trouverez ci-dessous la méthode complète décrite par la procédure précédente.

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

Voir aussi

Concepts

Architecture de sécurité