0

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

客户端是 silverlight 调用 wcf 服务。即使我们已经建立了会话,客户端也会发送协商,服务器返回 401 并带有一些身份验证令牌。这发生在互联网上,有许多成功的呼叫(与失败的呼叫混杂在一起)

许多电话工作正常,只需发送 sessionid,一切正常。

在提琴手中,我们在下面看到

客户端发送

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

服务器发送

WWW-Authenticate: Negotiate TlRMTVNTUAACAAAACgAKADgAAAAVgonitqRU/FVLp9EAAAAAAAAAAI4AjgBCAAAABgGxHQAAAA9BAEQATABBAEIAAgAKAEEARABMAEEAQgABAA4AQwBJAFIAVAAtAEQAMwAEABYAYQBkAGwAYQBiAC4AbABvAGMAYQBsAAMAJgBDAEkAUgBUAC0ARAAzAC4AYQBkAGwAYQBiAC4AbABvAGMAYQBsAAUAFgBhAGQAbABhAGIALgBsAG8AYwBhAGwABwAIAMsTFgtFNc4BAAAAAA

4

1 回答 1

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。

我怀疑您的问题可能会在“连接到 Authenticated Services 时间歇性提示您输入凭据或遇到超时”知识库文章中得到解决。

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

于 2013-09-04T17:53:56.353 回答