[英]Windows 8.1 WCF client fails to connect to service with digest authentication over BasicHttpBinding
從Windows 8.1連接客戶端時,我的WCF應用程序出現問題。 在過去的幾天里,我一直在發瘋,無法深入探究。 這是場景:
我的WCF服務相當簡單。 它使用basicHttpBinding,TransportCredentialOnly安全模式和摘要客戶端憑據類型。 (web.config文件在這里: http : //pastebin.com/LsWmcfTs )。 這樣做是因為我需要服務器端的Windows身份。
我的客戶端是一個控制台應用程序,嘗試在我的服務中調用“ Ping”方法(僅返回文本“ Pong”)時會發生故障,用於連接該服務的代碼如下:
var basicBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
basicBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Digest;
var client = new TestExecutionEngineClient(basicBinding, new EndpointAddress(uri));
client.Open();
client.Ping();
在所有連接的客戶端上,這已經工作了一年多,除了Windows 8.1從未使用過。
當它打到client.Ping(); 我得到以下異常:
例外:
HTTP請求未經客戶端身份驗證方案“摘要”授權。 從服務器收到的身份驗證標頭是“摘要qop =“ auth”,算法= MD5-sess,nonce =“ + Upgradeed + v1c1d404aaeb7edbba8daf132fea97aa12243033a0f40acf01376892331a408411c85513f482eab750b18498cb2d420b2fb99998b5b
內部異常:
遠程服務器返回錯誤:(401)未經授權。
基本異常:
安全包中沒有可用的憑據
據我所知,似乎服務器端正在請求摘要(正確),並且客戶端正在摘要中進行身份驗證,但它不會接受.....
任何和所有幫助將不勝感激。 謝謝
問題在於,Microsoft在8.1 / 2012 R2中增強了LSAS中的安全性。 通過網絡發送用戶身份信息不再支持BasicHttpBinding。 您必須改為使用WSHttpBinding。
這解決了我的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.