Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    Authentifizierung durch Session Cookie der RestAPI

    ChurchTools Schnittstellen
    2
    3
    228
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Daniel_Busse
      Daniel_Busse last edited by

      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 Reply Last reply Reply Quote 0
      • hbuerger
        hbuerger ChurchToolsMitarbeiter last edited by

        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?

        1 Reply Last reply Reply Quote 0
        • Daniel_Busse
          Daniel_Busse last edited by

          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 Reply Last reply Reply Quote 1
          • First post
            Last post