
Quería ejecutar una API usando la línea de comando pero necesito pasar Cookie: JSESSIONID=<>; auth_cookie=<> valor mientras lo ejecuta. Contamos con autenticación CAS para la API de destino.
Déjeme saber el curl u otro comando para obtener la cookie: JSESSIONID=<>; auth_cookie=<> valor para poder pasarlo mientras ejecuto la API.
lo he probado con
curl -v -s --cacert /etc/ssl/certs/cacert.crt https://example.com/login -c cookiefile -d "[email protected]&password=xxxx" -X POST
Pero solo almacena JSESSIONID en el archivo cookie. En el inicio de sesión del navegador https://example.com/login
se redirigirá a la página de inicio de sesión del servidor CAS. Después de la autenticación, se redirigirá ahttps://example.com/index
Seguí el enfoque dado 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 y JSESSIONID deben usarse en la próxima llamada
curl -L -s --cacert /etc/ssl/certs/cacertga.crt --data "username=$USERNAME&password=$PASSWORD<=$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
y finalmente .header.txt debe tener la URL de ubicación adjunta con la identificación del ticket. Es necesario realizar una llamada final a esa ubicación para obtener auth_cookie. Pero en mi caso, no proporciona la URL de ubicación en sí.
Refiero soluciónaquí
Estoy editando esta pregunta porque obtuve una solución usando Python. Utilice mechanize.Browser() y será fácil obtener la cookie de autenticación requerida.
Respuesta1
El hecho de que primero necesite iniciar sesión antes de poder acceder a la API significa que una sola solicitud curl probablemente no sea suficiente.
Probablemente necesites un script con múltiples curl
solicitudes y un flujo de trabajo similar a:
- Realice una solicitud de API con las cookies existentes del archivo de cookies
- Verifique el código de respuesta; si está bien, las cookies de sesión aún no han caducado y no necesita hacer más. ¡Sí!
- Si el código de respuesta indica un estado de error de autenticación (su sesión de autenticación está vacía o ha caducado); entonces necesitas iniciar sesión.
- Publique sus credenciales en el formulario de inicio de sesión del servidor CAS.
- Verifique el código de respuesta y vea si el inicio de sesión fue exitoso y actualice el archivo de cookies.
Odie();
- IR A 1.
El complemento estándar de herramientas para desarrolladores de Chrome puede ayudarlo a crear la base para dicho script curl con elCopiar todo como cURLopción en la consola de red.