Заставьте Safari использовать разное автозаполнение для разных URL на одном имени хоста
У меня есть веб-сервер, публикующий различные сервисы по одному и тому же SSL VirtualHost, наиболее часто используемыми являются PhpMyAdmin и Cacti. Они (и другие) используют аутентификацию в стиле "cookie", запрашивая имя пользователя и пароль в форме HTML (таким образом, не используя аутентификацию HTTP).
Находясь на одном и том же имени хоста, браузер Safari не управлял слишком хорошо сохраненными паролями: если я войду в одно приложение с пользователем foo, а затем перейду ко второму приложению, мне будет предложено указать пользователя foo и его пароль в форме входа. Раньше достаточно было просто изменить имя пользователя на панель, чтобы Safari автоматически заполнял правильный пароль в своем поле формы. Раздражает, но я мог бы с этим смириться - имена пользователей короткие и их легко запомнить по сравнению с паролями, которые мы используем.
После обновления до safari5, похоже, это уже не так: если я сохраняю в safari (на самом деле цепочку ключей пользователя на OSX) учетные данные для https://www.foobarbaz.com/app1 И учетные данные для https://www.foobarbaz.com/app2 похоже, нет возможности для автозаполнения обоих на основе URL. Даже редактирование цепочки для ключей для добавления пути (по умолчанию она будет хранить только имя хоста) не помогает.
Могу ли я что-нибудь сделать, чтобы все работало так, как я хочу, при этом сохраняя все на одном имени хоста? Конечно, возможно изменить что-либо на стороне сервера, но я не могу переключить приложения на HTTP-аутентификацию (и не все будут поддерживать его в любом случае), чтобы использовать разные "сферы".
2 ответа
Как я понимаю, в URI HTTP-запроса хост - это все, что находится между схемой (т. Е. Http://) и концом домена верхнего уровня (т. Е. .com/
), и все, что находится справа от хоста, является запросом хоста для обработки.
Лучшее решение вашей проблемы - использование поддоменов. https://app1.foobarbaz.com/
а также https://app2.foobarbaz.com
, Вам нужно будет разместить субдомены в зоне DNS для foobarbaz.com
домена и настройте виртуальные хосты на веб-сервере для обработки запросов, используя /app1
а также /app2
, Apache и IIS могут делать именно то, что вам нужно, без необходимости перенастраивать приложения. Вам, вероятно, придется получить (или создать) новые сертификаты для работы SSL без ошибок безопасности браузера.
Видимо, это не разрешено согласно (ИМХО глупой) организационной политике. ОП должен работать, чтобы изменить эту политику, потому что она конфликтует с тем, как работает интернет.
Тем не менее, другой альтернативой является модификация каждого приложения для развертывания определенного cookie-файла для себя, а затем просмотр всех возвращенных cookie-файлов, чтобы найти один для себя. Как это сделать, зависит от платформы и является вопросом StackOverflow.
Если вы имеете в виду аутентификацию с использованием HTTP-аутентификации (в отличие от HTML-формы), это работает: вы можете заставить ее работать, устанавливая различные области аутентификации вместе с URL-адресом. Как это:
<Location /abc/>
AuthType Basic
AuthName "Realm for ABC"
AuthUserFile /var/www/html/domain.org/abc/.htpasswd
require valid-user
</Location>
<Location /xxx/>
AuthType Basic
AuthName "Realm for XXX"
AuthUserFile /var/www/html/domain.org/xxx/.htpasswd
require valid-user
</Location>
Интересная часть AuthName
, Затем Safari запоминает / автозаполняет диалог авторизации HTTP для каждой области, а не только для домена.