Procedura: usare più token di sicurezza dello stesso tipo

  • In .NET Framework 3.0 un messaggio del client contiene solo un token di un determinato tipo. Nella nuova versione, i messaggi del client possono contenere più token di uno stesso tipo. In questo argomento viene illustrato come includere più token dello stesso tipo in un messaggio del client.

  • Si noti che non è possibile configurare un servizio in questo modo, in quanto un servizio può contenere un solo token di supporto.

Per usare più token di sicurezza dello stesso tipo

  1. Creare una raccolta di elementi di associazione vuota in cui inserire i dati.

    // Create an empty BindingElementCollection to populate,
    // then create a custom binding from it.
    BindingElementCollection bec = new BindingElementCollection();
    
  2. Creare una classe SecurityBindingElement chiamando CreateMutualCertificateBindingElement.

    SecurityBindingElement sbe = SecurityBindingElement.CreateMutualCertificateBindingElement();
    
  3. Creare una raccolta SupportingTokenParameters.

    SupportingTokenParameters supportParams = new SupportingTokenParameters();
    
  4. Aggiungere i token SAML alla raccolta.

    // Two supporting SAML tokens are being added.
    supportParams.SignedEndorsing.Add(new IssuedSecurityTokenParameters("samlTokenType", issuerEndpointAddress1, issuerBinding1));
    supportParams.SignedEndorsing.Add(new IssuedSecurityTokenParameters("samlTokenType", issuerEndpointAddress2, issuerBinding2));
    
  5. Aggiungere la raccolta alla classe SecurityBindingElement.

    ((SymmetricSecurityBindingElement)sbe).OperationSupportingTokenParameters.Add("*", supportParams);
    
  6. Aggiungere gli elementi di associazione alla relativa raccolta.

    bec.Add(sbe);
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    
  7. Restituire una nuova associazione personalizzata creata a partire dalla raccolta di elementi di associazione.

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

Esempio

Di seguito è riportato l'intero metodo descritto nella procedura precedente.

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