Procedura: usare più token di sicurezza dello stesso tipoHow to: Use Multiple Security Tokens of the Same Type

  • In .NET Framework.NET Framework 3.0 un messaggio del client contiene solo un token di un determinato tipo.In .NET Framework.NET Framework 3.0, a client message only contained one token of any given type. Nella nuova versione, i messaggi del client possono contenere più token di uno stesso tipo.Now client messages can contain multiple tokens of a type. In questo argomento viene illustrato come includere più token dello stesso tipo in un messaggio del client.This topic shows how to include multiple tokens of the same type in a client message.

  • Si noti che non è possibile configurare un servizio in questo modo, in quanto un servizio può contenere un solo token di supporto.Note that you cannot configure a service in this way: a service can contain only one supporting token.

Per usare più token di sicurezza dello stesso tipoTo use multiple security tokens of the same type

  1. Creare una raccolta di elementi di associazione vuota in cui inserire i dati.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. Creare una classe SecurityBindingElement chiamando CreateMutualCertificateBindingElement.Create a SecurityBindingElement by calling CreateMutualCertificateBindingElement.

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

    SupportingTokenParameters supportParams = new SupportingTokenParameters();
    
  4. Aggiungere i token SAML alla raccolta.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. Aggiungere la raccolta alla classe SecurityBindingElement.Add the collection to the SecurityBindingElement.

    ((SymmetricSecurityBindingElement)sbe).OperationSupportingTokenParameters.Add("*", supportParams);
    
  6. Aggiungere gli elementi di associazione alla relativa raccolta.Add binding elements to the binding element collection.

    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.Return a new custom binding created from the binding element collection.

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

EsempioExample

Di seguito è riportato l'intero metodo descritto nella procedura precedente.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);
}

Vedere ancheSee Also

Architettura di sicurezzaSecurity Architecture