Procedura: creare un'associazione federata duplexHow to: Create a Duplex Federated Binding

WSFederationHttpBinding supporta solo contratti di scambio di datagrammi e messaggi request/reply.WSFederationHttpBinding only supports the datagram and request/reply message exchange contracts. Per utilizzare il contratto di scambio di messaggi duplex, è necessario creare un'associazione personalizzata.To use the duplex message exchange contract, you must create a custom binding. Nelle procedure seguenti viene illustrato come effettuare questa operazione nella configurazione, utilizzando la sicurezza in modalità messaggio per i trasporti HTTP e TCP e la sicurezza in modalità mista per il trasporto TCP.The following procedures show how to do this in configuration, using Message mode security for the HTTP and TCP transports, and using mixed mode security for the TCP transport. Alla fine di questo argomento viene riportato il codice di esempio che illustra tutte e 3 le associazioni.Sample code showing all 3 bindings is at the end of this topic.

È inoltre possibile creare l'associazione nel codice.You can also create the binding in code. Per una descrizione dello stack di elementi di associazione per creare, vedere procedura: creare un'associazione personalizzata usando SecurityBindingElement.For a description of the binding elements stack to create, see How to: Create a Custom Binding Using the SecurityBindingElement.

Per creare un'associazione personalizzata federata duplex con HTTPTo create a duplex federated custom binding with HTTP

  1. Nel <associazioni > nodo del file di configurazione, creare un <customBinding > elemento.In the <bindings> node of the configuration file, create a <customBinding> element.

  2. All'interno di <customBinding > elemento, creare un <associazione > elemento con la name attributo impostato su FederationDuplexHttpMessageSecurityBinding.Inside the <customBinding> element, create a <binding> element with the name attribute set to FederationDuplexHttpMessageSecurityBinding.

  3. All'interno di <associazione > elemento, creare un <sicurezza > elemento con la authenticationMode attributo impostato su SecureConversation.Inside the <binding> element, create a <security> element with the authenticationMode attribute set to SecureConversation.

  4. All'interno di <sicurezza > elemento, creare un <secureConversationBootstrap > elemento con la authenticationMode attributo impostato su IssuedTokenForCertificate o IssuedTokenForSslNegotiated.Inside the <security> element, create a <secureConversationBootstrap> element with the authenticationMode attribute set to IssuedTokenForCertificate or IssuedTokenForSslNegotiated.

  5. Dopo il <sicurezza > elemento, creare un oggetto vuoto <compositeDuplex > elemento.Following the <security> element, create an empty <compositeDuplex> element.

  6. Dopo il <compositeDuplex > elemento, creare un oggetto vuoto <oneWay > elemento.Following the <compositeDuplex> element, create an empty <oneWay> element.

  7. Dopo il <oneWay > elemento, creare un oggetto vuoto <httpTransport > elemento.Following the <oneWay> element, create an empty <httpTransport> element.

Per creare un'associazione personalizzata federata duplex con la modalità di sicurezza dei messaggi TCPTo create a duplex federated custom binding with TCP message security mode

  1. Nel <associazioni > nodo del file di configurazione, creare un <customBinding > elemento.In the <bindings> node of the configuration file, create a <customBinding> element.

  2. All'interno di <customBinding > elemento, creare un <associazione > elemento con la name attributo impostato su FederationDuplexTcpMessageSecurityBinding.Inside the <customBinding> element, create a <binding> element with the name attribute set to FederationDuplexTcpMessageSecurityBinding.

  3. All'interno di <associazione > elemento, creare un <sicurezza > elemento con la authenticationMode attributo impostato su SecureConversation.Inside the <binding> element, create a <security> element with the authenticationMode attribute set to SecureConversation.

  4. All'interno di <sicurezza > elemento, creare un <secureConversationBootstrap > elemento con la authenticationMode attributo impostato su IssuedTokenForCertificate o IssuedTokenForSslNegotiated.Inside the <security> element, create a <secureConversationBootstrap> element with the authenticationMode attribute set to IssuedTokenForCertificate or IssuedTokenForSslNegotiated.

  5. Dopo il <sicurezza > elemento, creare un oggetto vuoto <tcpTransport > elemento.Following the <security> element, create an empty <tcpTransport> element.

Per creare un'associazione personalizzata federata duplex con la modalità di sicurezza mista TCPTo create a duplex federated custom binding with TCP mixed security mode

  1. Nel <associazioni > nodo del file di configurazione, creare un <customBinding > elemento.In the <bindings> node of the configuration file, create a <customBinding> element.

  2. All'interno di <customBinding > elemento, creare un <associazione > elemento con la name attributo impostato su FederationDuplexTcpTransportSecurityWithMessageCredentialBinding.Inside the <customBinding> element, create a <binding> element with the name attribute set to FederationDuplexTcpTransportSecurityWithMessageCredentialBinding.

  3. All'interno di <associazione > elemento, creare un <sicurezza > elemento con la authenticationMode attributo impostato su SecureConversation.Inside the <binding> element, create a <security> element with the authenticationMode attribute set to SecureConversation.

  4. All'interno di <sicurezza > elemento, creare un <secureConversationBootstrap > elemento con la authenticationMode attributo impostato su IssuedTokenForCertificate o IssuedTokenForSslNegotiated.Inside the <security> element, create a <secureConversationBootstrap> element with the authenticationMode attribute set to IssuedTokenForCertificate or IssuedTokenForSslNegotiated.

  5. Dopo il <sicurezza > elemento, creare un oggetto vuoto <sslStreamSecurity > elemento.Following the <security> element, create an empty <sslStreamSecurity> element.

  6. Dopo il <sslStreamSecurity > elemento, creare un oggetto vuoto <tcpTransport > elemento.Following the <sslStreamSecurity> element, create an empty <tcpTransport> element.

Esempio di codiceCode Sample

Esempio con 3 associazioniSample with 3 Bindings

  1. Inserire il codice seguente nel file di configurazione.Insert the following code into your configuration file.

EsempioExample

<bindings>  
   <customBinding>  
      <binding name="FederationDuplexHttpMessageSecurityBinding">  
<!-- duplex contract requires secure conversation with require cancellation = true -->  
          <security authenticationMode="SecureConversation">  
              <secureConversationBootstrap authenticationMode="IssuedTokenForSslNegotiated" />  
          </security>  
          <compositeDuplex />  
          <oneWay />  
          <httpTransport />  
       </binding>  
<!-- duplex over https is not supported -->  
       <binding name="FederationDuplexTcpMessageSecurityBinding">  
<!-- duplex contract requires secure conversation with require cancellation = true -->  
          <security authenticationMode="SecureConversation">  
              <secureConversationBootstrap authenticationMode="IssuedTokenForSslNegotiated" />  
          </security>  
          <tcpTransport />  
       </binding>              
       <binding name="FederationDuplexTcpTransportSecurityWithMessageCredentialsBinding">  
<!-- duplex contract requires secure conversation with require cancellation = true -->  
          <security authenticationMode="SecureConversation">  
              <secureConversationBootstrap authenticationMode="IssuedTokenOverTransport" />  
          </security>  
<!-- requireClientCertificate = true or <windowsStreamSecurity /> can be used, but does not make sense for most scenarios -->  
          <sslStreamSecurity />  
          <tcpTransport />  
       </binding>              
    </customBinding>  
</bindings>