2012-08-23 65 views
5

Tengo 2 servicios wcf alojados en IIS en la misma máquina. El servicio A es llamado por un cliente y usa BasicHttpBinding con seguridad de transporte y NTLM credentialtype. El servicio A necesita llamar al servicio B que también está alojado en IIS pero usa WsHttpBinding con seguridad de transporte y NTLM credentialtype.Pasar credenciales de un servicio wcf a otro servicio wcf

IIS está configurado para usar la autenticación integrada de Windows.

El primer intento Tengo un mensaje 403 prohibida:

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. 

Esto es normal porque cuando hago una llamada de servicio de la A a la B servicio de la identidad del grupo de aplicaciones se utiliza.

En mi segundo intento intenté suplantar la llamada al servicio B pero luego el problema es que todo el código en la operación se ejecuta bajo la cuenta de los llamantes. Esta cuenta no tiene permisos de ACL en el servidor y proporcionar estos permisos no es una opción. El siguiente error se registra:

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)) 

¿Cómo podría solucionar esto sin cambiar la seguridad de la ACL o la identidad del grupo de aplicaciones?

Respuesta