代码之家  ›  专栏  ›  技术社区  ›  urig

为什么我的WCF端点不抛出Max Clock Skew异常?

  •  5
  • urig  · 技术社区  · 14 年前

    http://www.danrigsby.com/blog/index.php/2008/08/26/changing-the-default-clock-skew-in-wcf/ ).

    但是,实现mylogin()方法的一个端点从不抛出此异常,即使它启用了传输安全性(自然不需要凭据)。

    为什么“时钟倾斜机制”不适用于这个端点?可能是因为clientCredentialType设置为“None”?

    例如,下面是我的配置的简化版本:

    <services>
        <service name="Foo">
            <endpoint address=""
                binding="wsHttpBinding"
                bindingConfiguration="binding1"
                contract="IFoo" />
        </service>
    </services>
    
    <bindings>
        <wsHttpBinding> 
            <binding name="binding1" maxReceivedMessageSize="100000000">
                <readerQuotas maxDepth="1000000000" maxArrayLength="1000000000" maxStringContentLength="1000000000" />
                <security mode="Transport">
                    <transport clientCredentialType ="None"/>
                </security>
                <reliableSession enabled="false" />
            </binding>
        </wsHttpBinding>    
    </bindings>     
    
    2 回复  |  直到 14 年前
        1
  •  3
  •   ScalaMyCapela    14 年前

    安全模式-security mode=“Transport”-在消息中不包含时间戳,这会导致MaxClockSkew验证忽略消息而不会引发安全异常。 将安全模式更改为security mode=“TransportWithMessageCredential”,其中包含时间戳,并允许MaxClockSkew验证测试消息的时间增量。

        2
  •  1
  •   Community CDub    8 年前

    其他人也有类似的问题:

    Triggering MaxClockSkew when accessing WCF service

    所以我不认为这是一个与您的配置问题。

    似乎,如果它不使用机器时间,它就不会检查机器之间是否有时间差。

    你可以用自己的方式编程,把客户机时间作为参数发送到你的登录方法中,如果不一样,抛出一个异常。