确定Web http身份验证方法

Sep*_*eph 11 http-authentication

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

Rem*_*anu 11

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

HTTP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="example.com",
                        qop="auth,auth-int",
                        nonce="...",
                        opaque="..."
Run Code Online (Sandbox Code Playgroud)

它想要一个Digest身份验证.如果响应如下:

HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="example.com"
Run Code Online (Sandbox Code Playgroud)

那么它需要基本身份验证.一些(很差)实现的服务器/站点无法正确处理Basic并直接响应403 Forbidden而不是先挑战.

NTLM类似于服务器响应401和WWW-Authenticate标头的值NTLM,但没有正式的公共规范,因为它是微软专有的.有各种逆向 工程描述.

遗憾的是,REST没有提供WSDL样式的服务描述来发现先验使用的认证方案.