Condividi tramite


Procedura: creare un'associazione personalizzata utilizzando SecurityBindingElement

In Windows Communication Foundation (WCF) sono incluse numerose associazioni fornite dal sistema che possono essere configurate, ma che non forniscono totale flessibilità durante la configurazione di tutte le opzioni di protezione supportate da WCF. In questo argomento viene illustrato come creare direttamente un'associazione personalizzata di singoli elementi di associazione e vengono evidenziate alcune impostazioni di protezione che è possibile specificare durante la creazione di tale associazione. Per ulteriori informazioni sulla creazione di associazioni personalizzate, vedere Estensione delle associazioni.

Creazione di un'associazione personalizzata

In WCF tutte le associazioni sono costituite da elementi di associazione. Ogni elemento di associazione deriva dalla classe BindingElement. Per le associazioni standard fornite dal sistema, vengono creati e configurati gli elementi di associazione, sebbene sia possibile personalizzare alcune delle impostazioni delle proprietà.

Al contrario, per creare un'associazione personalizzata, vengono creati e configurati gli elementi di associazione dai quali viene creato CustomBinding.

A tale scopo, vengono aggiunti singoli elementi di associazione a un insieme rappresentato da un'istanza della classe BindingElementCollection, quindi la proprietà Elements di CustomBinding viene impostata allo stesso modo dell'oggetto. È necessario aggiungere gli elementi di associazione nell'ordine seguente: Transaction Flow, Reliable Session, Security, Composite Duplex, One-way, Stream Security, Message Encoding e Transport. Si noti che non tutti gli elementi di associazione elencati sono necessari in ogni associazione.

SecurityBindingElement

Tre elementi di associazione sono correlati alla protezione a livello di messaggio e sono tutti derivati dalla classe SecurityBindingElement. I tre elementi sono TransportSecurityBindingElement, SymmetricSecurityBindingElement e AsymmetricSecurityBindingElement. TransportSecurityBindingElement viene utilizzato per fornire una protezione in modalità mista. Gli altri due elementi sono utilizzati quando la protezione è fornita dal livello di messaggio.

Le classi aggiuntive vengono utilizzate quando viene fornita la protezione a livello di trasporto:

Elementi di associazione obbligatori

Esiste un ampio numero di possibili elementi di associazione che si possono combinare in un'associazione. Non tutte queste combinazioni sono valide. In questa sezione vengono descritti gli elementi obbligatori che devono essere presenti in un'associazione di protezione.

Le associazioni di protezione valide dipendono da molti fattori, tra cui:

  • Modalità di protezione.
  • Protocollo di trasporto.
  • Modello di scambio dei messaggi (MEP, Message Exchange Pattern) specificato nel contratto.

Nella tabella seguente vengono illustrate le configurazioni dello stack dell'elemento di associazione valide per ogni combinazione dei fattori precedenti. Si noti che si tratta di requisiti minimi. È possibile aggiungere ulteriori elementi all'associazione, ad esempio elementi di associazione di codifica dei messaggi, di transazione e di altro tipo.

Modalità di protezione Transport Modello di scambio dei messaggi del contratto

Datagramma

Request/Reply

Duplex

Transport

Https

OneWayBindingElement

HttpsTransportBindingElement

HttpsTransportBindingElement

TCP

OneWayBindingElement

SSL o Windows StreamSecurityBindingElement

SSL o Windows StreamSecurityBindingElement

SSL o Windows StreamSecurityBindingElement

TcpTransportBindingElement

TcpTransportBindingElement

TcpTransportBindingElement

Messaggio

Http

SymmetricSecurityBindingElement

SymmetricSecurityBindingElement

SymmetricSecurityBindingElement (modalità di autenticazione = SecureConversation)

CompositeDuplexBindingElement

OneWayBindingElement

OneWayBindingElement

HttpTransportBindingElement

HttpTransportBindingElement

HttpTransportBindingElement

Tcp

SecurityBindingElement

SecurityBindingElement

SymmetricSecurityBindingElement (modalità di autenticazione = SecureConversation)

TcpTransportBindingElement

TcpTransportBindingElement

TcpTransportBindingElement

Misto (trasporto con credenziali messaggio)

Https

TransportSecurityBindingElement

TransportSecurityBindingElement

OneWayBindingElement

HttpsTransportBindingElement

HttpsTransportBindingElement

TCP

TransportSecurityBindingElement

SymmetricSecurityBindingElement (modalità di autenticazione = SecureConversation)

SymmetricSecurityBindingElement (modalità di autenticazione = SecureConversation)

OneWayBindingElement

SSL o Windows StreamSecurityBindingElement

SSL o Windows StreamSecurityBindingElement

SSL o Windows StreamSecurityBindingElement

TcpTransportBindingElement

TcpTransportBindingElement

TcpTransportBindingElement

Si noti che esistono molte impostazioni configurabili in SecurityBindingElements. Per ulteriori informazioni, vedere Modalità di autenticazione di SecurityBindingElement.

Per ulteriori informazioni, vedere Conversazioni e sessioni protette.

Procedure

Per creare un'associazione personalizzata che utilizza un SymmetricSecurityBindingElement

  1. Creare un'istanza della classe BindingElementCollection con il nome outputBec.

  2. Chiamare il metodo statico M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true) che restituisce un'istanza della classe SymmetricSecurityBindingElement.

  3. Aggiungere SymmetricSecurityBindingElement all'insieme (outputBec) chiamando il metodo Add di Collection della classe BindingElement.

  4. Creare un'istanza della classe TextMessageEncodingBindingElement e aggiungerla all'insieme (outputBec). In tal modo viene specificata la codifica utilizzata dall'associazione.

  5. Creare un HttpTransportBindingElement e aggiungerlo all'insieme (outputBec). In tal modo viene specificato che l'associazione utilizza il trasporto HTTP.

  6. Creare una nuova associazione personalizzata creando un'istanza della classe CustomBinding e passando l'insieme outputBec al costruttore.

  7. L'associazione personalizzata risultante condivide molte delle stesse caratteristiche di WSHttpBinding standard. Specifica la protezione a livello di messaggio e le credenziali di Windows, ma disattiva le sessioni protette. Richiede che la credenziale del servizio venga specificata fuori banda e non crittografa le firme. Quest'ultima funzione può essere controllata solo impostando la proprietà MessageProtectionOrder come illustrato nel passaggio 4. Le altre due possono essere controllate utilizzando le impostazioni sull'associazione standard.

Esempio

Descrizione

Nell'esempio seguente è riportata una funzione completa per creare un'associazione personalizzata che utilizza un SymmetricSecurityBindingElement.

Codice

Vedere anche

Riferimenti

SecurityBindingElement
TransportSecurityBindingElement
SymmetricSecurityBindingElement
CustomBinding

Concetti

Associazioni fornite dal sistema

Altre risorse

Estensione delle associazioni