определение методов веб-аутентификации http - PullRequest
11 голосов
/ 12 августа 2010

Как определить, использует ли веб-служба REST Basic, Kerberos, NTLM или один из многих других методов аутентификации?

Ответы [ 3 ]

11 голосов
/ 12 августа 2010

Когда вы отправляете запрос без аутентификации, служба должна ответить «HTTP / 1.1 401 Unauthorized», и ответ содержит заголовок WWW-Authenticate, который указывает, какая схема аутентификации ожидается (Basic, Digest),область безопасности и любое другое конкретное значение (например, одноразовый номер Дидже).Поэтому, если сервер отвечает:

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 Запрещено, вместо того, чтобы сначала бросить вызов.

NTLM аналогичен тому, что сервер отвечает 401 и заголовок WWW-Authenticate сзначение NTLM, но для него не существует официальной публичной спецификации, так как является собственностью Microsoft.Существуют различные обратные инженерные описания.

К сожалению, REST не поставляется с описанием службы WSDL в стиле для обнаружения схемы аутентификации, используемой a priori .

4 голосов
/ 12 августа 2010

Вы отправляете запрос, предположительно получаете код HTTP 401 и просматриваете заголовок WWW-Authenticate, который (для RFC 2616 ) включает ответ MUST.Если вместо этого вы получаете 403 или какой-то другой странный статус, или отсутствующий заголовок WWW-Authenticate, вы ругаете авторов веб-сайтов, которые не следуют основному HTTP RFC, и начинаете анализировать трафик, чтобы попытаться перепроектировать, какой нестандартный беспорядок они 'мы сделали это время; -).

1 голос
/ 12 августа 2010

Если это сценарий черного ящика, я обычно подключаюсь к Fiddler и проверяю фактический трафик.

...