Ожидаемая идентификация при подключении к услуге в качестве сетевой услуги,
У нас есть веб-приложение, работающее в пуле приложений "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" />