Передать учетные данные из одной службы wcf в другую службу wcf
У меня есть 2 службы wcf, которые размещены на IIS на одной машине. Служба A вызывается клиентом и использует BasicHttpBinding
с транспортной безопасностью и NTLM credentialtype
, Служба A должна вызывать службу B, которая также размещена на IIS, но использует WsHttpBinding
с транспортной безопасностью и NTLM credentialtype
,
IIS настроен на использование встроенной проверки подлинности Windows.
С первой попытки я получил запрещенное сообщение 403:
System.ServiceModel.Security.MessageSecurityException : The HTTP request was forbidden with client authentication scheme 'Ntlm'.
System.Net.WebException: The remote server returned an error: (403) Forbidden.
Это нормально, потому что когда я звоню из службы A в службу B, используется идентификатор пула приложений.
Во второй попытке я попытался выдать себя за вызов службы B, но тогда проблема заключается в том, что весь код операции выполняется под учетной записью абонента. Эта учетная запись не имеет разрешений ACL на сервере, и предоставление этих разрешений не вариант. Следующая ошибка регистрируется:
System.IO.FileLoadException : Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The handle is invalid. (Exception from HRESULT: 0x80070006 (E_HANDLE))
Как я могу решить эту проблему, не меняя безопасность ACL или удостоверения пула приложений?
1 ответ
Проверьте это: http://blogs.msdn.com/b/securitytools/archive/2009/11/04/double-hop-windows-authentication-with-iis-hosted-wcf-service.aspx. Нашли вышеуказанную ссылку здесь: http://go4answers.webhost4life.com/Example/calling-wcf-service-another-wcf-service-204170.aspx