Я написал службу WCF, размещенную в IIS 6 на сервере, который не является частью домена.Он использует следующую конфигурацию:
<system.serviceModel>
<services>
<service behaviorConfiguration="ServiceBehavior" name="Services.DeliveryStatsService">
<endpoint address="" binding="customBinding" bindingConfiguration="BindingWithMaxClockSkewForIncorrectlyConfiguredWindowsServer"
contract="Services.IDeliveryStatsService" />
</service>
</services>
<bindings>
<customBinding>
<binding name="BindingWithMaxClockSkewForIncorrectlyConfiguredWindowsServer">
<binaryMessageEncoding />
<security>
<localClientSettings maxClockSkew="00:20:00" />
<localServiceSettings maxClockSkew="00:20:00" />
<secureConversationBootstrap />
</security>
<httpTransport />
</binding>
</customBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Это было бы просто basicHttpBinding
, за исключением того, что часы сервера не установлены на нужное время и его администратор не изменит их, поэтому customBinding
требуется для разрешения «clockSkew».
Клиенты используют практически одинаковую конфигурацию (в привязке) и могут без проблем обращаться к службе, если они не являются частью домена.Однако клиенты, являющиеся частью домена, отклоняются с сообщением «Вызывающая сторона не была аутентифицирована службой».
Я включил трассировку, и может показаться, что проблема возникает из-за обмена токенами с использованием аннулирования SSPI.,К сожалению, я не могу найти правильную конфигурацию, которая позволит обеим машинам, которые не являются частью домена, и машинам, которые являются частью домена, получать доступ к службе.Я пробовал несколько значений для authenticationMode
, но безрезультатно.Более того, насколько мне известно, мне не нужна особая защита для этой службы.
Конфигурация WCF далеко не моя специальность, и я нигде не нашел ответа, поэтому янадеюсь, кто-нибудь в Stack Overflow сможет помочь.Заранее спасибо.