2013-04-09 270 views
0

我们使用仅启用了Windows身份验证的IIS 7.5。提供商是ntlm和negogiate(因为我们希望它可以通过互联网访问)。IIS窗口身份验证(NTLM)

客户端是silverlight调用wcf服务。即使我们建立了会话,客户端也会使用某个身份验证令牌发送协商和服务器返回401。这发生intermettinetly,与许多成功的电话(混合失败的电话)

许多调用工作正常,只是发送sessionid和everthing工作正常。

在拉琴,我们看到下面

客户端发送

授权:协商TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw == ASP.NET_SessionId = 0ix0fqf02j1imrpfc4awit3w

服务器发送

WWW身份验证:协商TlRMTVNTUAACAAAACgAKADgAAAAVgonitqRU/FVLp9EAAAAAAAAAAI4AjgBCAAAABgGxHQAAAA9BAEQATABBAEIAAgAKAEEARABMAEEAQgABAA4AQwBJAFIAVAAtAEQAMwAEABYAYQBkAGwAYQBiAC4AbAB vAGMAYQBsAAMAJgBDAEkAUgBUAC0ARAAzAC4AYQBkAGwAYQBiAC4AbABvAGMAYQBsAAUAFgBhAGQAbABhAGIALgBsAG8AYwBhAGwABwAIAMsTFgtFNc4BAAAAAA

回答

0

我还不能肯定我理解你的问题,但我猜你要解决的间歇性故障NTLM?

您描述的标题是挑战响应协议NTLM的一部分。这里有一个更完整的例子:

Client: Get/HTTP/1.1 

Server: HTTP/1.1 401 Unauthorized 
     WWW-Authenticate: Negotiate 
     WWW-Authenticate: NTLM 

Client: Get/HTTP/1.1 
     Authorization: Negotiate ###################### (encrypted Negotiate) 

Server: HTTP/1.1 401 Unauthorized 
     WWW-Authenticate: Negotiate ###################### (encrypted Challenge) 

Client: Get/HTTP/1.1 
     WWW-Authenticate: Negotiate ###################### (encrypted Response) 

Server: HTTP/1.1 200 OK 

在公共互联网上使用这种认证方法可能是一个坏主意;它旨在用于客户端和服务器都可以访问公共Windows Active Directory域的专用Intranet中使用。

我怀疑您的问题可能在“You are intermittently prompted for credentials or experience time-outs when you connect to Authenticated Services”知识库文章中得到解决。

下面是其他一些相关的参考资料: