Problema para obter Cookie: JSESSIONID e auth_cookie

Problema para obter Cookie: JSESSIONID e auth_cookie

Eu queria executar uma API usando a linha de comando, mas preciso passar Cookie: JSESSIONID=<>; auth_cookie=<> valor ao executá-lo. Temos autenticação CAS para a API de destino.

Por favor, deixe-me saber o curl ou outro comando para obter o Cookie: JSESSIONID=<>; auth_cookie=<> valor para que eu possa passá-lo durante a execução da API.

Eu tentei com

 curl -v -s --cacert /etc/ssl/certs/cacert.crt https://example.com/login -c cookiefile -d "[email protected]&password=xxxx" -X POST

Mas está apenas armazenando JSESSIONID no arquivo cookie. No login do navegador, https://example.com/loginele será redirecionado para a página de login do servidor CAS, após a autenticação, ele será redirecionado parahttps://example.com/index

Segui a abordagem dada por @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/\".*//'`

Este CAS_ID e JSESSIONID precisam ser usados ​​na próxima chamada

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

e, finalmente, .header.txt deve ter o URL do local anexado ao ID do ticket. É necessário fazer a chamada final nesse local para obter auth_cookie. Mas, no meu caso, não está fornecendo o URL de localização em si.

indico soluçãoaqui

Estou editando esta pergunta, pois consegui uma solução usando python. Use mechanize.Browser() e será fácil obter o cookie de autenticação necessário.

Responder1

O fato de você precisar fazer login primeiro antes de poder acessar a API significa que uma única solicitação curl provavelmente não é suficiente.

Você provavelmente precisará de um script com múltiplas curlsolicitações e fluxo de trabalho semelhante a:

  1. Faça solicitação de API com os cookies existentes do cookiefile
  2. Verifique o código de resposta, se estiver OK, os cookies da sessão ainda não expiraram e você não precisa fazer mais nada. Sim!
  3. Se o código de resposta indicar um status de erro de autenticação (sua sessão de autenticação está vazia ou expirou); então você precisa fazer login.
  4. Publique suas credenciais no formulário de login do servidor CAS.
  5. Verifique o código de resposta e veja se o login foi bem-sucedido e atualize o arquivo cookie.
    Oudie();
  6. VÁ PARA 1.

O plug-in padrão das ferramentas de desenvolvedor do Chrome pode ajudá-lo a criar a base para esse script curl com oCopiar tudo como cURLopção no console de rede.

insira a descrição da imagem aqui

informação relacionada