2012-08-23 8 views
5

Ho due servizi wcf entrambi ospitati su IIS sulla stessa macchina. Il servizio A viene chiamato da un client e utilizza BasicHttpBinding con sicurezza di trasporto e NTLM credentialtype. Servizio A deve chiamare il servizio B che è anche ospitato su IIS ma utilizza WsHttpBinding con sicurezza di trasporto e NTLM credentialtype.Passa le credenziali da un servizio Wcf a un altro servizio Wcf

IIS è configurato per utilizzare l'autenticazione integrata di Windows.

Il primo tentativo ho ricevuto un messaggio 403 vietato:

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. 

Questo è normale, perché quando faccio una chiamata dal servizio di A al servizio di B l'identità del pool di applicazioni viene utilizzato.

Nel mio secondo tentativo, ho provato a impersonare la chiamata al servizio B, ma il problema è che tutto il codice nell'operazione viene eseguito sotto l'account chiamanti. Questo account non ha permessi ACL sul server e fornire queste autorizzazioni non è un'opzione. il seguente errore viene registrato:

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

Come potrei risolvere questo senza cambiare la sicurezza della ACL o l'identità del pool di applicazioni?

risposta