HTTP-аутентификация - заголовок WWW-Authenticate - несколько областей

Есть ли у кого-нибудь опыт поддержки нескольких областей в HTTP-аутентификации?

На веб-сайте Microsoft указано:

Каждый заголовок ответа аутентификации содержит доступную аутентификацию схемы и сферы. Если несколько схемы аутентификации поддерживаются, сервер возвращает несколько аутентифицировать заголовки ответов. значение области зависит от регистра и определяет защитное пространство на прокси или сервера. Например, заголовок "WWW-Authenticate: Basic Realm =" example "" будет примером заголовка, возвращаемого сервером требуется аутентификация.

Это говорит о том, что различные области веб-сайта могут быть защищены с использованием разных методов проверки подлинности. Мы смущаемся о том, как определить, какая область должна быть указана в ответе сервера на запрос клиента.

Есть ли у кого-нибудь примеры того, как работают несколько областей?

Ответы

Ответ 1

Спецификация HTTP позволяет нескольким WWW-Authenticate вызовам присутствовать в ответе либо внутри одного заголовка WWW-Authenticate, либо с использованием нескольких WWW-Authenticate в одном и том же ответе.

С этим связаны проблемы, описанные в RFC 2617, раздел 4.6. Теоретически, клиент должен выбрать самый сильный механизм аутентификации, однако определение того, какой из них является самым сильным, не всегда очевидно.

Я никогда не пробовал с несколькими областями (и той же схемой, например Basic), но я не знаю ни о чем не разрешающем. Основная проблема с несколькими областями и одна и та же схема заключается в том, что браузер, скорее всего, будет запутан с точки зрения пользовательского интерфейса, в частности, с которым он сталкивается с пользователем.

Ответ 2

У меня есть один хороший пример использования нескольких заголовков аутентификации при использовании сайта sharepoint. Sharepoint предлагает как Negotiate, так и NTLM при первом подключении.

Firefox выбирает NTLM, но Chrome выбирает Negotiate.

Это также следствие того, что Chrome всегда будет отправлять заголовок авторизации вместе с другими запросами, но Firefox только в начале из-за протокола ответа на вызов NTLM. См. Здесь больше объяснений http://www.innovation.ch/personal/ronald/ntlm.html