2013-12-06 4 views
5

Мы используем CURL для автоматизации некоторых административных задач в веб-приложении, использующем cookie SSO для всех сайтов в домене. Недавно произошла смена системы аутентификации в приложении, с которым мы автоматизировали. Хорошо. Мы изменили сценарий CURL, чтобы он соответствовал новой аутентификации. Мы можем получать файлы cookie и сохранять их в банке.Сохранение файлов cookie с CURL на linux

Проблема в том, как файл cookie сохраняется. Я посмотрел, как заголовки в Google Chrome и Mozilla Firefox и заголовки ответов те же, что и в CURL. Однако файл cookie в банке cookie не сохраняет файл cookie таким образом, что его можно отправить дочерним пользователям в домене.

завитка Пример выглядит следующим образом:

завиток -c MyCookie "https://login.example.com" -d loginUID = MyUserName -d loginPWD = мойпароль

Формат это экономия:

login.example.com FALSE/TRUE SSOCookie automaticvalue

Куки будут потребляться субсайтами если вручную изменить кук для:

.example.com TRUE/ИСТИНА SSOCookie automatedvalue

Я не знаю, почему печенье будет сохранены как таковой.

Кто-нибудь знает, что может заставить CURL сохранить куки-файлы как таковые? Или, если есть работа, отличная от ручного/сценария, изменение, которое будет использоваться для всего домена?

Примечание: Когда я делаю -v при настройке файлов cookie. Он говорит * Replased печенье SSOCookie «uniquecookieid» для домена login.cat.com

Спасибо,

+0

Можете ли вы привести пример CURL, который вы используете для настройки файла cookie? – brandonscript

+0

Я пошел вперед и добавил пример. Вот он: curl -c mycookie "https://login.example.com" -d loginUID = myusername -d loginPWD = mypassword – neoanomally

+0

Так как это * чтение * удалённого файла cookie в этом случае, вы действительно не можете сделать об этом; проблема заключается в том, что вы купили файл cookie. Можете ли вы изменить способ создания cookie на самом сайте? если нет, вы будете застревать, пишите что-нибудь, чтобы разобрать и исправить файлы cookie после их загрузки. – brandonscript

ответ

7

Проведя две недели и много часов я наконец нашел решение. Причина, по которой cookie не была установлена, состояла в том, что сервер проверял, откуда сделан запрос. В команде curl я добавил a -referer в домен сайта.

завитка -c MyCookie "https://login.example.com" -d "loginUID = MyUserName" -d "loginPWD = мойпароль" --referer "https://login.example.com"

Печенье банка теперь содержит печенье, которые могут быть использованы для отправки на сервер.

+0

Как это работает для таких поддоменов, как https://login-other.example.com? Или в вашей ситуации вы могли бы передать https://example.com, и это сработает? – brandonscript

Смежные вопросы