Sitecore с requireSSL для файлов cookie
Наш веб-сайт Sitecore 6.6.0 (rev. 120918) может работать как по протоколу http, так и по протоколу https. У нас также есть требование безопасности, чтобы все куки передавались по SSL независимо от того, доступен ли сайт по http.
Мы выполнили это требование, используя свойство requireSSL в файле web.config, как описано здесь: Как я могу установить флаг Secure для файла cookie сеанса ASP.NET?
С этим изменением наш общедоступный веб-сайт работает нормально, и при анализе в Firebug мы видим, что все файлы cookie являются "безопасными", даже если доступ к веб-сайту осуществляется через http.
Но проблема в том, что когда я пытаюсь войти на портал администратора сайта через http, он выдает ошибку The application is configured to issue secure cookies. These cookies require the browser to issue the request over SSL (https protocol). However, the current request is not over SSL.
Единственный способ получить доступ к порталу администратора сайта - через https. Даже с https это вызывает некоторые странные проблемы. После некоторого времени использования в нем говорится, что вошло много пользователей-администраторов, и я должен выкинуть несколько, чтобы войти. Я также не могу получить доступ к порталу администратора удаленно.
Почему общедоступный веб-сайт работает с файлами cookie SSL, а у портала администратора сайта есть проблемы с файлами cookie SSL. Может ли быть и несовместимая конфигурация на нашем сайте?
2 ответа
Я думаю, что проблема будет в том, что вы установили <httpCookies requireSSL="true" />
который будет устанавливать куки для безопасности, но также должен установить аутентификацию форм:
<system.web>
<forms requireSSL="true">
/* forms content */
</forms>
</system.web>
Поскольку это переопределит настройку cookie. Проблема заключается в том, что для этого набора в разделе форм требуется, чтобы вход в систему происходил через https, а не через http. На общедоступном веб-сайте вы увидите эту проблему только при наличии формы для входа.
Чтобы это исправить, вам нужно будет либо включить SSL для вашей системы авторинга (что все равно рекомендуется), либо смириться с тем, что не используются безопасные куки.
Исходя из сообщения об ошибке, я предполагаю, что логин пытается установить cookie с атрибутом secure, когда соединение не защищено. Это, конечно, было бы успешным, если бы запрос уже был безопасным.
В качестве обходного пути вы можете использовать IIS Rewrite для перенаправления запроса в /sitecore на SSL до того, как будут установлены какие-либо файлы cookie, так как я предполагаю, что вы действительно хотите все запросы на SSL для управления контентом.
Я также мог бы быть совершенно неверным здесь:)