我們編寫了一個WCF服務,部署在IIS上。我們選擇了集成Windows認證。服務無法在這種情況下使用,但是如果我們可以將IIS虛擬目錄的身份驗證方法設置爲WCF服務的「匿名」,那麼錯誤將消失。但是「匿名」對於我們的WCF服務是不可接受的。我們必須使用集成Windows身份驗證來驗證客戶端。任何人都知道如何解決這個問題?WCF服務,Windows身份驗證
由於提前,
阿希什
我們編寫了一個WCF服務,部署在IIS上。我們選擇了集成Windows認證。服務無法在這種情況下使用,但是如果我們可以將IIS虛擬目錄的身份驗證方法設置爲WCF服務的「匿名」,那麼錯誤將消失。但是「匿名」對於我們的WCF服務是不可接受的。我們必須使用集成Windows身份驗證來驗證客戶端。任何人都知道如何解決這個問題?WCF服務,Windows身份驗證
由於提前,
阿希什
還有,你需要注意兩兩件事:
它可能是第二個給你帶來問題的東西。 IIS日誌應該包含哪個用戶正在進行呼叫。
其實,如果我允許集成Windows身份驗證,沒有匿名,然後客戶端窗口應用程序無法訪問服務本身,即使在服務器上,如果我瀏覽服務,它會告訴我以下錯誤 「此服務的安全設置需要'匿名'身份驗證但它不支持承載此服務的IIS應用程序。「 – Kasma 2009-09-03 13:18:07
你要做的幾件事情:
創建以下綁定配置:
<basicHttpBinding>
<binding name="Binding1">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
應用上面的配置爲你服務和MEX:
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IService">
</endpoint>
<endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IMetadataExchange">
</endpoint>
創建一個客戶端和使用的NetworkCredential來傳遞您的憑據:
ServiceReference.MyClient proxy = new ServiceReference.MyClient();
proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("MACHINENAME\\USERACCOUNT", "passwrd");
proxy.YourServiceOperation();
還有其他的方法來設置用戶名密碼& indivdually但它並沒有在.NET 4.0中工作。 USERACCOUNT是WCF主機加入的域帳戶或LDAP。 如果服務器未加入域,則通過運行「lusrmgr.msc」在本地創建一個帳戶
你能顯示什麼配置文件顯示客戶端和wcf服務的配置嗎? – CSharpAtl 2009-09-02 13:48:48