• Aktuell
    • Tags
    • Beliebt
    • Benutzer
    • Gruppen
    • Suche
    • Registrieren
    • Anmelden

    Authentifizierung durch Session Cookie der RestAPI

    ChurchTools Schnittstellen
    2
    3
    382
    Lade mehr Beiträge
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
    • Daniel_BusseD
      Daniel_Busse
      zuletzt editiert von

      Hallo ,

      derzeit arbeite ich an einem Projekt, bei welchem ich Daten eines Users über die RestAPI abrufen möchte. Ich habe aber Probleme mit der Authentifizierung und dem Session Cookie. CORS Anfrage wurde schon gestellt und bearbeitet.

      Ich habe ein eigenartiges Verhalten meines Tools festgestellt. Wenn ich einen Login-Request sende, wird dieser immer erfolgreich beantwortet. Wenn ich anschließend den Token der eingeloggten Person abfrage wird er nur unter folgender Bedingung zurückgegeben:
      Ich kriege NUR dann den Token, wenn ich mit dem selben Account bei {gemeinde}.church.tools angemeldet bin.

      Bin ich mit einem anderen Account angemeldet kommt ein (403) Forbidden. Wenn ich nicht angemeldet bin, kommt ein (401) Unauthorized.

      Code für den Login mit anschließendem Abruf des Tokens:

      $.ajax("https://jkbtreptow.church.tools/api/login", {
      	method: 'POST',
      	data: {username: username, password: password},
      	contentType: "application/x-www-form-urlencoded",
      	crossDomain: true,
      	dataType: "json",
      	success: function(data, status, jqXHR) {
      		getUserToken(data.data.personId);
      	},
      	error: function(data, status, jqXHR) { doSomething(); }
      });	
      

      Code für Abruf des Tokens:

      $.ajax("https://jkbtreptow.church.tools/api/persons/"+personId+"/logintoken", {
      	method: 'GET',
      	crossDomain: true,
      	xhrFields: { withCredentials: true },
      	success: function(data, status, jqXHR){ doSomething();	},
      	error: function(data, status, jqXHR) { doSomething(); }
      });	
      

      Hier die Fehlermeldungen für das Token abhängig von der ChurchTools Webseite:

      eingeloggt:

      success
      data{loginToken}
      

      nicht eingeloggt:

      GET https://{gemeinde}.church.tools/api/persons/491/logintoken 401 (Unauthorized)
      

      anderer Account:

      GET https://jkbtreptow.church.tools/api/persons/491/logintoken 403 (Forbidden)
      

      Was mache ich falsch?

      1 Antwort Letzte Antwort Antworten Zitieren 0
      • hbuergerH
        hbuerger ChurchToolsMitarbeiter
        zuletzt editiert von

        Hi,

        das hört sich so an, dass du die Requests direkt über die Entwickler Console im Browser ausführst. Ist das korrekt?

        Wenn ja, dann musst du wissen, dass der Browser immer auch die Cookies für die Seite mitschickt. D.h. dein Session Cookie der Person die aktuell in CT eingeloggt ist. Somit werden alle Requests für diese Person ausgeführt.

        Hast du deinen Workflow schon mittels CURL oder Postman ausprobiert?

        ChurchTools Mitarbeiter – Trainer – Supporter – Academy

        1 Antwort Letzte Antwort Antworten Zitieren 0
        • Daniel_BusseD
          Daniel_Busse
          zuletzt editiert von

          Hi,
          das Thema hat sich mittlerweile erledigt. Danke trotzdem für die schnelle Antwort. Mit Postman hat der Request funktioniert, da der Postman-Client die Cookies sichtlich speichert.

          Da ich den Ablauf jetzt aber Server-seitig durchführen lasse, gibt es keine Komplikationen mehr. Ich brauchte nur etwas Einarbeitungszeit in die Materie.

          Liebe Grüße aus Berlin und alles Gute für die Zeit der Krise 🙂

          1 Antwort Letzte Antwort Antworten Zitieren 1
          • Erster Beitrag
            Letzter Beitrag