Procedura: impostare lo sfasamento massimo dei segnali di clock

È possibile un malfunzionamento delle funzioni dipendenti dall'orario quando le impostazioni dell'orologio in due computer sono differenti. Per limitare questo problema, è possibile impostare la proprietà MaxClockSkew su un TimeSpan. Questa proprietà è disponibile in due classi:

LocalClientSecuritySettings

LocalServiceSecuritySettings

Importante   Per una conversazione sicura, è necessario apportare modifiche alla proprietà MaxClockSkew quando il servizio o il client viene avviato automaticamente. A tale scopo, è necessario impostare la proprietà sull'oggetto SecurityBindingElement restituito da BootstrapSecurityBindingElement.

Per modificare la proprietà in una delle associazioni fornite dal sistema, è necessario trovare l'elemento di associazione di protezione nell'insieme di associazioni e impostare la proprietà MaxClockSkew su un valore nuovo. Le due classi derivano da SecurityBindingElement: SymmetricSecurityBindingElement e AsymmetricSecurityBindingElement. Quando si recupera l'associazione di protezione dall'insieme, è necessario eseguire il cast a uno di questi tipi per impostare correttamente la proprietà MaxClockSkew. Nell'esempio seguente viene utilizzato WSHttpBinding che utilizza SymmetricSecurityBindingElement. Per un elenco che specifica quale tipo di associazione di protezione utilizzare in ogni associazione fornita dal sistema, vedere Associazioni fornite dal sistema.

Per creare un'associazione personalizzata con un nuovo valore dello sfasamento dei segnali di clock nel codice

  1. Nota   Aggiungere riferimenti agli spazi dei nomi seguenti nel codice: System.ServiceModel.Channels, System.ServiceModel.Description, System.Security.Permissionse System.ServiceModel.Security.Tokens.

    Creare un'istanza della classe WSHttpBinding e impostarne la modalità di protezione su Message.

  2. Creare una nuova istanza della classe BindingElementCollection chiamando il metodo CreateBindingElements.

  3. Utilizzare il metodo Find della classe BindingElementCollection per trovare l'elemento di associazione di protezione.

  4. Quando si utilizza il metodo Find, eseguire il cast al tipo effettivo. Nell'esempio seguente viene eseguito il cast al tipo SymmetricSecurityBindingElement.

  5. Impostare la proprietà MaxClockSkew sull'elemento di associazione di protezione.

  6. Creare un ServiceHost con un tipo di servizio e un indirizzo di base appropriati.

  7. Utilizzare il metodo AddServiceEndpoint per aggiungere un endpoint e includere CustomBinding.

Per impostare MaxClockSkew nella configurazione

  1. Creare customBinding Element nella sezione dell'elemento <Bindings>.

  2. Creare un elemento <binding> e impostare l'attributo name su un valore appropriato. Nell'esempio seguente viene impostato su MaxClockSkewBinding.

  3. Aggiungere un elemento di codifica. Nell'esempio seguente viene aggiunto textMessageEncoding element.

  4. Aggiungere un elemento security Element of customBinding e specificare un'impostazione appropriata per l'attributo authenticationMode. Nell'esempio seguente l'attributo viene impostato su Kerberos per specificare che il servizio utilizza l'autenticazione di Windows.

  5. Aggiungere localServiceSettings element e impostare l'attributo maxClockSkew su un valore come "##:##:##". Nell'esempio seguente viene impostato su 7 minuti. Aggiungere facoltativamente localServiceSettings element e impostare l'attributo maxClockSkew su un'impostazione appropriata.

  6. Aggiungere un elemento trasporto. Nell'esempio seguente viene utilizzato httpTransport element:

  7. Per una conversazione sicura, le impostazioni di sicurezza devono essere applicate all'avvio automatico nell'elemento secureConversationBootstrap.

    <bindings>
      <customBinding>
        <binding name="MaxClockSkewBinding">
            <textMessageEncoding />
            <security authenticationMode="Kerberos">
               <localClientSettings maxClockSkew="00:07:00" />
               <localServiceSettings maxClockSkew="00:07:00" />
               <secureConversationBootstrap>
                  <localClientSettings maxClockSkew="00:30:00" />
                  <localServiceSettings maxClockSkew="00:30:00" />
               </secureConversationBootstrap>
            </security>
            <httpTransport />
        </binding>
      </customBinding>
    </bindings>
    

Vedere anche

Riferimenti

LocalClientSecuritySettings
LocalServiceSecuritySettings
CustomBinding

Concetti

Procedura: creare un'associazione personalizzata utilizzando SecurityBindingElement