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