如何确定REST Web服务是使用Basic,Kerberos,NTLM还是其他许多身份验证方法之一?
答案 0 :(得分:11)
当您发送未经身份验证的请求时,服务必须使用“HTTP / 1.1 401 Unauthorized”进行响应,并且响应包含WWW-Authenticate
标头,该标头指定了预期的身份验证方案(Basic
,{{ 1}}),安全领域和任何其他特定值(如Digets的nonce)。因此,如果服务器响应:
Digest
它需要摘要式身份验证。如果响应如下:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="example.com",
qop="auth,auth-int",
nonce="...",
opaque="..."
然后它想要一个基本身份验证。一些(很差)实现的服务器/站点无法正确处理Basic并直接使用403 Forbidden响应而不是首先进行挑战。
NTLM类似于服务器响应401和WWW-Authenticate标头,其值为HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="example.com"
,但没有正式的公共规范,因为它是Microsoft专有的。有各种reverse engineered说明。
不幸的是,REST没有提供WSDL样式的服务描述来发现使用先验的身份验证方案。
答案 1 :(得分:4)
您向其发送请求,可能是获取HTTP 401代码,并查看响应WWW-Authenticate
包含的MUST
标头(RFC 2616)。如果您得到403或其他一些奇怪的状态,或者缺少WWW-Authenticate
标题,那么您会诅咒不遵循核心HTTP RFC的网站作者,并开始嗅探流量以尝试对非标准混乱进行逆向工程他们已经完成这个时间; - )。
答案 2 :(得分:1)
如果是黑盒子情况,我通常会与Fiddler联系,并检查实际流量。