Problem beim Abrufen des Cookies: JSESSIONID und auth_cookie

Problem beim Abrufen des Cookies: JSESSIONID und auth_cookie

Ich wollte eine API über die Befehlszeile ausführen, muss aber bei der Ausführung den Wert Cookie: JSESSIONID=<>; auth_cookie=<> übergeben. Wir haben eine CAS-Authentifizierung für die Ziel-API.

Bitte teilen Sie mir den Curl- oder einen anderen Befehl zum Abrufen des Cookie-Werts mit: JSESSIONID=<>; auth_cookie=<>, damit ich ihn beim Ausführen der API übergeben kann.

Ich habe versucht mit

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

Aber es speichert nur JSESSIONID in der Cookie-Datei. Bei der Browseranmeldung https://example.com/loginwird zur CAS-Server-Anmeldeseite weitergeleitet. Nach der Authentifizierung wird sie weitergeleitet zuhttps://example.com/index

Ich bin dem Ansatz von @HBruijn gefolgt.

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/\".*//'`

Diese CAS_ID und JSESSIONID müssen beim nächsten Anruf verwendet werden

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

und schließlich sollte .header.txt eine Standort-URL mit angehängter Ticket-ID enthalten. Es muss ein letzter Aufruf dieses Standorts erfolgen, um Auth_Cookie zu erhalten. In meinem Fall wird jedoch nicht die Standort-URL selbst angegeben.

Ich empfehle die LösungHier

Ich bearbeite diese Frage, da ich eine Lösung mit Python habe. Verwenden Sie mechanize.Browser() und Sie erhalten ganz einfach ein erforderliches Authentifizierungscookie.

Antwort1

Da Sie sich zunächst anmelden müssen, bevor Sie auf die API zugreifen können, ist eine einzelne Curl-Anfrage wahrscheinlich nicht ausreichend.

Sie benötigen wahrscheinlich ein Skript mit mehreren curlAnfragen und einem Arbeitsablauf ähnlich dem:

  1. API-Anfrage mit den vorhandenen Cookies aus der Cookiedatei stellen
  2. Überprüfen Sie den Antwortcode. Wenn OK, sind die Sitzungscookies noch nicht abgelaufen und Sie müssen nichts weiter tun. Ja!
  3. Wenn der Antwortcode einen Authentifizierungsfehlerstatus anzeigt (Ihre Authentifizierungssitzung ist leer oder abgelaufen), müssen Sie sich anmelden.
  4. Senden Sie Ihre Anmeldeinformationen an das Anmeldeformular des CAS-Servers.
  5. Überprüfen Sie den Antwortcode, um festzustellen, ob die Anmeldung erfolgreich war, und aktualisieren Sie die Cookie-Datei.
    Oderdie();
  6. GEHE ZU 1.

Das Standard-Plugin für die Chrome-Entwicklertools kann Ihnen standardmäßig dabei helfen, die Grundlage für ein solches Curl-Skript zu erstellen, mit demAlles als cURL kopierenOption in der Netzwerkkonsole.

Bildbeschreibung hier eingeben

verwandte Informationen