Ожидаемая идентификация при подключении к услуге в качестве сетевой услуги,

У нас есть веб-приложение, работающее в пуле приложений "NETWORK SERVICE". Веб-приложение подключается к службе (.svc) на другом веб-сервере. Другой веб-сервер также имеет службу, размещенную как "NETWORK SERVICE". Я считаю, что это по умолчанию.

Следующая конечная точка, при запуске в другом месте работает отлично.

<endpoint address="http://server123/UnitTrustService/UnitTrustService.svc"
  binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_UnitTrustService"
  contract="UnitTrustServiceReference.UnitTrustService" name="WSHttpBinding_UnitTrustService">
 <identity>
  <servicePrincipalName value="server123" />
 </identity>
</endpoint>

К сожалению, при выполнении с веб-сайта мы получаем следующую ошибку.

        System.ServiceModel.Security.MessageSecurityException: 
    The identity check failed for the outgoing message. 
    The expected identity is 'identity(http://schemas.xmlsoap.org/ws/2005/05/identity/right/possessproperty: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn)' 
for the 'http://server123/UnitTrustService/UnitTrustService.svc' target endpoint. 
Server stack trace: at System.ServiceModel.Security.IdentityVerifier.EnsureIdentity(EndpointAddress serviceReference, AuthorizationContext authorizationContext, String errorString)...

Есть идеи? Я попытался запустить это как локальную систему на машине веб-сервера с точно такой же конфигурацией, и она работает отлично.

Это как-то связано с IIS?

С уважением, Крейг.

1 ответ

Это, вероятно, указывает на проблему с клиентом web.config. Дважды проверьте <identity> для клиента. Например, следующий пример фрагмента в файле web.config вашего клиента может вызвать это исключение, если служба ожидает, что идентификатор будет userPrincipalName вместо servicePrincipalName, Это простое различие, которое можно пропустить, и оно меня настигло раньше.

<system.serviceModel>
    <client>
      <endpoint address="http://server.domain.com/Services/DoSomething.svc" behaviorConfiguration="EndpointBehavior" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IDoSomething" contract="Mycontract" name="WSHttpBinding_IDoSomething_Custom_AddSomething">
        <identity>
          <servicePrincipalName value="user@domain.com" />
Другие вопросы по тегам