Compartir a través de


Cómo: Establecer un sesgo de reloj máximo

Las funciones críticas en el tiempo se pueden desbaratar si los ajustes del reloj en dos equipos son diferentes. Para mitigar esta posibilidad, puede establecer la propiedad MaxClockSkew en TimeSpan. Esta propiedad está disponible en dos clases:

LocalClientSecuritySettings

LocalServiceSecuritySettings

Aa738468.note(es-es,VS.90).gif
Importante   Para una conversación segura, los cambios en la propiedad MaxClockSkew se deben realizar cuando el servicio o cliente se programa previamente. Para ello, debe establecer la propiedad en el objeto SecurityBindingElement devuelto por BootstrapSecurityBindingElement.

Para cambiar la propiedad en uno de los enlaces proporcionados por el sistema, debe encontrar el elemento de enlace de seguridad en la colección de enlaces y establecer la propiedad MaxClockSkew en un nuevo valor. Dos clases derivan de SecurityBindingElement: SymmetricSecurityBindingElement y AsymmetricSecurityBindingElement. Al recuperar el enlace de seguridad de la colección, debe convertir a uno de estos tipos para establecer correctamente la propiedad MaxClockSkew. El siguiente ejemplo usa un WSHttpBinding, que utiliza el SymmetricSecurityBindingElement. Para obtener una lista que especifica qué tipo de enlace de seguridad utilizar en cada enlace proporcionado por el sistema, vea Enlaces proporcionados por el sistema.

Para crear un enlace personalizado con un nuevo valor de sesgo de reloj en código

  1. Aa738468.note(es-es,VS.90).gif
    Nota: Agregue referencias a los espacios de nombres siguientes en el código: System.ServiceModel.Channels, System.ServiceModel.Description, System.Security.Permissions y System.ServiceModel.Security.Tokens.

    Cree una instancia de una clase WSHttpBinding y establezca su modo de seguridad en Message.

  2. Cree una nueva instancia de la clase BindingElementCollection llamando al método CreateBindingElements.

  3. Utilice el método Find de la clase BindingElementCollection para encontrar el elemento del enlace de seguridad.

  4. Al utilizar el método Find, convierta al tipo real. El ejemplo siguiente convierte al tipo SymmetricSecurityBindingElement.

  5. Establezca la propiedad MaxClockSkew en el elemento del enlace de seguridad.

  6. Cree un ServiceHost con un tipo de servicio y dirección base adecuados.

  7. Utilice el método AddServiceEndpoint para agregar un extremo e incluir el CustomBinding.

Para establecer MaxClockSkew en la configuración

  1. Cree un customBinding Element en la sección del elemento <Bindings>.

  2. Cree un elemento <binding> y establezca el atributo name en un valor adecuado. El siguiente ejemplo lo define en MaxClockSkewBinding.

  3. Agregue un elemento de codificación. El siguiente ejemplo agrega un textMessageEncoding element.

  4. Agregue un security Element of customBinding y establezca el atributo authenticationMode en un valor adecuado. El siguiente ejemplo establece el atributo en Kerberos para especificar que el servicio usa autenticación de Windows.

  5. Agregue un localServiceSettings element y establezca el atributo maxClockSkew en un valor en la forma de "##:##:##". El siguiente ejemplo lo establece en 7 minutos. De manera opcional, agregue un localServiceSettings element y establezca el atributo maxClockSkew en un valor adecuado.

  6. Agregue un elemento de transporte. El ejemplo siguiente utiliza un httpTransport element.

  7. Para una conversación segura, la configuración de seguridad se debe producir en la programación previa del 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>
    

Consulte también

Referencia

LocalClientSecuritySettings
LocalServiceSecuritySettings
CustomBinding

Conceptos

Cómo: Crear un enlace personalizado mediante SecurityBindingElement