11

您如何确定 REST Web 服务使用的是 Basic、Kerberos、NTLM 还是许多其他身份验证方法之一?

4

3 回答 3

11

当您发送未经身份验证的请求时,服务必须以“HTTP/1.1 401 Unauthorized”进行响应,并且响应包含一个WWW-Authenticate标头,该标头指定预期的身份验证方案(Basic, Digest)、安全领域和任何其他特定值(如 Digets 的随机数) . 因此,如果服务器响应:

HTTP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="example.com",
                        qop="auth,auth-int",
                        nonce="...",
                        opaque="..."

它需要摘要式身份验证。如果响应如下所示:

HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="example.com"

然后它想要一个基本的身份验证。一些(糟糕的)实现的服务器/站点不能正确处理 Basic 并直接响应 403 Forbidden 而不是首先挑战。

NTLM 与服务器使用 401 响应和带有 value 的 WWW-Authenticate 标头类似NTLM,但没有官方的公共规范,因为它是 Microsoft 专有的。有各种逆向 工程描述。

不幸的是,REST 没有提供服务的 WSDL 样式描述来发现先验使用的身份验证方案。

于 2010-08-11T23:57:47.380 回答
4

你向它发送一个请求,大概得到一个 HTTP 401 代码,然后查看响应包含的WWW-Authenticate标头(根据RFC 2616 )。MUST相反,如果您得到 403 或其他一些奇怪的状态,或者缺少WWW-Authenticate标头,您会诅咒不遵循核心 HTTP RFC 的网站作者,并开始嗅探流量以尝试对他们所做的非标准混乱进行逆向工程时间;-)。

于 2010-08-11T23:53:04.193 回答
1

如果是黑盒场景,我通常会连接Fiddler并检查实际流量。

于 2010-08-11T23:49:25.527 回答