Проблема для получения файлов cookie: JSESSIONID и auth_cookie

Я хотел запустить один API из командной строки, но мне нужно передать Cookie: JSESSIONID = <>; auth_cookie = <> значение при его выполнении. У нас есть аутентификация CAS для целевого API.

Пожалуйста, дайте мне знать curl или другую команду для получения Cookie: JSESSIONID = <>; auth_cookie = <> value, чтобы я мог передать его при выполнении API.

Я пробовал с

 curl -v -s --cacert /etc/ssl/certs/cacert.crt https://example.com/login -c cookiefile -d "user=user1@domain.com&password=xxxx" -X POST

, но он просто сохраняет JSESSIONID в файле cookie. При входе в браузер https://example.com/login будет перенаправлять на страницу входа в CAS-сервер после аутентификации, он будет перенаправлен на https://example.com/index

Я следовал подходу задано @HBruijn.

ENCODED_DEST=`echo "https://example.com/login/login" | perl -p -e 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg' | sed 's/%2E/./g' | sed 's/%0A//g'`
CAS_ID=`curl -L -s --cacert /etc/ssl/certs/cacertga.crt -c $COOKIE_JAR https://cas-server.example2.com/cas/login?service=$ENCODED_DEST | grep name=.lt | sed 's/.*value..//' | sed 's/\".*//'`

Эти CAS_ID и JSESSIONID необходимо использовать в следующем вызове

curl -L -s --cacert /etc/ssl/certs/cacertga.crt --data "username=$USERNAME&password=$PASSWORD&lt=$CAS_ID&execution=e1s1&_eventId=submit" -i -b $COOKIE_JAR -c $COOKIE_JAR https://cas-server.example2.com/cas/login?service=$ENCODED_DEST -D .header.txt -o /dev/null

и, наконец, .header.txt должен иметь URL-адрес местоположения, добавляемый с идентификатором билета. Необходимо сделать последний вызов в этом месте, чтобы получить auth_cookie. Но в моем случае он сам не указывает URL-адрес местоположения.

Я ссылаюсь на решение здесь

Я редактирую этот вопрос, поскольку я получил решение с использованием python. Используйте механизировать. Browser (), и его будет легко получить.

0
задан 13 March 2019 в 08:53
1 ответ

Тот факт, что вам необходимо войти в систему, прежде чем вы сможете получить доступ к API, означает, что одного запроса curl, вероятно, недостаточно.

Вероятно, вам понадобится сценарий с несколькими запросами curl и рабочий процесс, аналогичный следующему:

  1. Выполните запрос API с существующими файлами cookie из файла cookie
  2. Проверьте код ответа, если все в порядке, то файлы cookie сеанса еще не истек, и вам не нужно ничего делать. Да!
  3. Если код ответа указывает на состояние ошибки аутентификации (ваш сеанс аутентификации пуст или истек); затем вам необходимо войти в систему.
  4. Разместите свои учетные данные в форме входа на сервер CAS.
  5. Проверьте код ответа и убедитесь, что вход был успешным, и обновите файл cookie.
    Или die ();
  6. GOTO 1.

Стандартный плагин инструментов разработчика Chrome может стандартно помочь вам создать основу для такого скрипта curl с помощью параметра Копировать все как cURL в к сетевой консоли.

enter image description here

0
ответ дан 5 December 2019 в 05:23

Теги

Похожие вопросы