C# Windows 8.1 WCF客户端无法通过BasicHttpBinding连接到具有摘要身份验证的服务

C# Windows 8.1 WCF客户端无法通过BasicHttpBinding连接到具有摘要身份验证的服务,c#,.net,wcf,authentication,digest-authentication,C#,.net,Wcf,Authentication,Digest Authentication,从Windows 8.1连接客户端时,我的WCF应用程序出现问题。在过去的几天里,我一直在为这件事发狂,无法弄清真相。以下是场景: 我的WCF服务相当直接。它使用basicHttpBinding、TransportCredentialOnly安全模式和摘要客户端凭据类型。(web.config文件位于此处:)。这样做是因为我需要服务器端的windows标识 我的客户机是一个控制台应用程序,当它试图调用我的服务中的“Ping”方法(它只返回文本“Pong”)时会发生故障。用于连接到服务的代码如下:

从Windows 8.1连接客户端时,我的WCF应用程序出现问题。在过去的几天里,我一直在为这件事发狂,无法弄清真相。以下是场景:

我的WCF服务相当直接。它使用basicHttpBinding、TransportCredentialOnly安全模式和摘要客户端凭据类型。(web.config文件位于此处:)。这样做是因为我需要服务器端的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除外,因为Windows 8.1从未运行过

当它点击client.Ping()时;我得到以下例外情况:

例外情况:

HTTP请求未经客户端身份验证方案“摘要”授权。从服务器接收的身份验证标头为'Digest qop=“auth”,算法=MD5 sess,nonce=“+Upgraded+V1C1D404AAEB7EDBBA8DAF132FEA97AA12243033A0F40ACF01376892331A408411C85513F482EAB750B18498CB2D420B2FB998B8B8B071A2”,字符集=utf-8,realm=“Digest”

内部异常:

远程服务器返回错误:(401)未经授权

基本例外情况:

安全包中没有可用的凭据

据我所知,看起来服务器端正在请求摘要(正确),客户端正在摘要中进行身份验证,但它不会接受它

我们将非常感谢您的任何帮助。
谢谢

问题在于微软在2012年8月1日R2中增强了LSA的安全性。不再支持BasicHttpBinding通过网络发送用户身份信息。您必须改用WSHttpBinding


这解决了我的问题

根据MSDN,Windows 8.1()发生了更改。问题用户是否是变更描述中列出的受保护用户组的成员?这看起来很有希望,但是我们的DC是2008 R2,并且我们的广告中没有称为受保护用户的安全组。。。因此,很自然,我的用户帐户不在it中。你可以创建一个小应用程序来自行托管服务,而不是IIS,看看它是否有效吗?刚刚完成,使用模板创建了一个基本的WCF服务库,但添加了摘要身份验证。在同一个windows 8.1设备上运行服务和客户端,我得到了完全相同的异常。您能否与Fiddler确认401 Unauthorized不是质询,而是质询的响应?WCF跟踪是否提供任何其他信息?