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

    Authentifizierung an API bei aktivierter 2FA

    ChurchTools Schnittstellen
    6
    22
    1.5k
    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.
    • fkmm-webmasterF
      fkmm-webmaster
      last edited by

      Hallo,

      gibt es eine Möglichkeit sich an der ChurchTools API zu authentifizieren wenn der Benutzer 2FA aktiviert hat?

      Von der ajax/login Schnittstelle bekomme ich momentan folgende Rückmeldung:

      {'status': 'fail', 'data': 'Login Fehlgeschlagen. User hat die 2-Faktor Authentifizierung aktiviert.'}
      

      Gibt es da einen zusätzlichen Parameter der nicht dokumentiert ist oder den ich übersehen habe?

      Viele Grüße,
      Simon

      1 Reply Last reply Reply Quote 0
      • fkmm-webmasterF
        fkmm-webmaster
        last edited by

        vielleicht noche eine kleine Hintergrund-Info warum API mit 2FA:

        Wir verwenden ChurchTools als Backend für das CMS unserer Internetseite indem wir die Benutzer über die ajax/login API authentifizieren.

        1 Reply Last reply Reply Quote 0
        • S
          stefanbe
          last edited by

          Sorry, dass ich hier reingrätsche - wie habt ihr die Verbindung CMS <-> ChurchTools realisiert? Rein interessehalber.

          fkmm-webmasterF 1 Reply Last reply Reply Quote 0
          • fkmm-webmasterF
            fkmm-webmaster @stefanbe
            last edited by

            @stefanbe unser CMS basiert auf dem Python Web-Framework Django. Wir haben hier ein eigenes Auth-Backend implementiert. Das sieht ungefähr so aus:

            class ChurchToolsBackend:
                def authenticate(self, request, username=None, password=None):
                    if not (username or password):
                        return None
            
                    params = {"q": "login/ajax"}
                    data = {"func": "login", "email": username, "password": password}
                    resp = requests.post(settings.CHURCHTOOLS_URL, params=params, data=data)
                    resp.raise_for_status()
                    payload = resp.json()
            
                    if payload["status"] == "success":
                        # Normalize the username to not have duplicates
                        username = username.lower()
                        try:
                            user = User.objects.get(username=username)
                        except User.DoesNotExist:
                            user = User(username=username)
                            user.save()
                        return user
                    return None
            
            1 Reply Last reply Reply Quote 1
            • F
              fodinabor
              last edited by

              Dürfte über die neue API laufen... also in die Richtung von:
              https://churchtools.eg-p.de/api/login mit den POST feldern username, password, rememberMe.

              wenn 2FA aktiviert ist ist die antwor

              {
                  "data": {
                      "status": "totp",
                      "message": "2-Factor Authentication activated. TOTP needed.",
                      "personId": 1
                  }
              }
              

              dann muss man an https://churchtools.eg-p.de/api/login/totp die parameter code (direkt der 2FA code, den man normal eingibt) und personId senden und erhält bei erfolg:

              {
                  "data": {
                      "status": "success",
                      "redirectTo": ""
                  }
              }
              
              1 Reply Last reply Reply Quote 1
              • fkmm-webmasterF
                fkmm-webmaster
                last edited by

                Gibt es da auch eine halbwegs vernünftige Dokumentation zu der API?

                AquilaA 1 Reply Last reply Reply Quote 0
                • AquilaA
                  Aquila @fkmm-webmaster
                  last edited by

                  @fkmm-webmaster sagte in Authentifizierung an API bei aktivierter 2FA:

                  Gibt es da auch eine halbwegs vernünftige Dokumentation zu der API?

                  Ja, sobald die neue API fertig ist. Siehe hier.

                  fkmm-webmasterF 1 Reply Last reply Reply Quote 0
                  • fkmm-webmasterF
                    fkmm-webmaster @Aquila
                    last edited by

                    @Aquila In Teilen scheint Sie ja schon fertig zu sein, bzw. einige scheinen ja schon die verschiedenen Endpunkte zu kennen. Oder ist das "invite only", reverse egineered, ...?

                    1 Reply Last reply Reply Quote 0
                    • F
                      fodinabor
                      last edited by

                      Ich hab auch noch keine Doku zu Gesicht bekommen... ich versuche mich meist erstmal damit den Netzwerk Verlauf von den Funktionen in CT anzuschauen (in den meisten Browsern mit CRTL+SHIFT+I die Development Konsole öffnen und dann auf den Netzwerk Tab wechseln)

                      Wenns nix hilft riskiere ich einen Blick in den Code, den wir dank self-hosting ja zur Verfügung haben... (DISCLAIMER: ich weiß nicht, wie gern das von CT gesehen wird)

                      Außerdem: Undokumentierte API Funktionen sind normal u.a. nicht dokumentiert, weil es sein kann, dass sie sich bald nochmal stark ändern können... (ohne größere Notiz) - wollts nur erwähnt haben...

                      fkmm-webmasterF 1 Reply Last reply Reply Quote 0
                      • fkmm-webmasterF
                        fkmm-webmaster @fodinabor
                        last edited by fkmm-webmaster

                        @fodinabor Danke für die Info. Leider hosten wir nicht selber 😞

                        Ich fände es gut die API zu dokumentieren und einfach mit einem Disclaimer zu versehen. So macht man das normalerweise (z.B. GitHub)

                        Damit kann man auch User-Feedback sammeln und nicht einfach etwas entwickeln das dann am Ende nur den eigenen Anforderungen genügt, aber keine wirkliche API ist.

                        1 Reply Last reply Reply Quote 0
                        • davidschillingD
                          davidschilling ChurchToolsMitarbeiter
                          last edited by

                          Wenn man automatisiert den Login machen will ist natürlich so ein zweiter Faktor sehr unpraktisch, weil man den ja nicht automatisiert bereitstellen kann.

                          In so einem Fall kann man z.B. einfach das Login Token nutzen um eingeloggt zu sein.
                          Dazu muss man auch immer die user_id angeben

                          Das Login_token kann man bei jedem Request mitschicken.
                          Z.B. So:

                          https://testdavid.church.tools/api/whoami?login_token=$LOGIN_TOKEN&user_id=$USER_ID

                          Man kann es auch nur beim ersten Request mitschicken und dann die Session verwenden.

                          fkmm-webmasterF F 3 Replies Last reply Reply Quote 0
                          • fkmm-webmasterF
                            fkmm-webmaster @davidschilling
                            last edited by fkmm-webmaster

                            @davidschilling der Login ist nicht automatisiert. Wir prüfen lediglich über die CT-API ob die Login-Daten eines Benutzers korrekt sind. Nun kann ich den Benutzer zwar nach dem 2FA Code fragen, aber diesen nicht über die API verifizieren (zumindest nicht über die Legacy-API).

                            Der Token-Login bringt mir in diesem Fall nichts.

                            Wäre es nicht möglich eine Beta-Version der API Dokumentation online zu stellen?

                            1 Reply Last reply Reply Quote 0
                            • fkmm-webmasterF
                              fkmm-webmaster @davidschilling
                              last edited by

                              @davidschilling sagte in Authentifizierung an API bei aktivierter 2FA:

                              https://testdavid.church.tools/api/whoami?login_token=$LOGIN_TOKEN&user_id=$USER_ID

                              Wieder eine neue API für die ich keine Dokumentation habe ...

                              1 Reply Last reply Reply Quote 0
                              • davidschillingD
                                davidschilling ChurchToolsMitarbeiter
                                last edited by

                                Wie oben schon jemand erwähnt hat ist diese Api aktuell in Entwicklung.

                                Wir werden dafür eine Dokumentation herausbringen. Aber die ist noch nicht fertig.
                                Wir wollen auch keine Dokumentation für eine Api herausbringen die sich noch ändern kann, weil sich sonst zu viele schon auf diese Api verlassen.

                                1 Reply Last reply Reply Quote 0
                                • F
                                  fodinabor
                                  last edited by

                                  @fkmm-webmaster für den aktuellen Fall einfach die URLs verwenden, die schon genannt wurden.. was super zum testen der Parameter funktioniert ist Postman.
                                  Sonst einfach nachfragen... finde die meisten Sachen mittlerweile recht schnell..

                                  @davidschilling ich muss tatsächlich sagen, dass ich auch für eine Beta Dokumentation wäre... einfach irgendwo sichtbar anzeigen, dass sich das ändern kann und wird.. dadurch, dass funktionen, wie das Anmelden mit 2FA nicht mehr über die alte API durchführbar sind, macht es in meinen Augen notwendig über die Möglichkeit der neuen API zu informieren.

                                  fkmm-webmasterF 1 Reply Last reply Reply Quote 1
                                  • fkmm-webmasterF
                                    fkmm-webmaster
                                    last edited by

                                    Wie ich oben geschrieben habe, ist das übliche Vorgehen, die API als Beta oder unstable zu veröffentlichen. So macht es z.B. GitHub.

                                    Das Nutzer die CT selber hosten sich die notwendige Infos aus dem source code ziehen können führt zu einer Zweiklassengesellschaft.

                                    Wie oben auch angemerkt denke ich daß die Rückmeldung von Usern bezüglich der API während der Entwicklung wichtig ist. Sonst hat man zwar eine Schnittstelle die aber vielleicht nicht das wiederspiegelt was man als Nutzer benötigt.

                                    1 Reply Last reply Reply Quote 1
                                    • fkmm-webmasterF
                                      fkmm-webmaster @fodinabor
                                      last edited by

                                      @fodinabor sagte in Authentifizierung an API bei aktivierter 2FA:

                                      Sonst einfach nachfragen... finde die meisten Sachen mittlerweile recht schnell..

                                      Danke für das Angebot 😉

                                      1 Reply Last reply Reply Quote 0
                                      • F
                                        fodinabor @davidschilling
                                        last edited by fodinabor

                                        @davidschilling sagte in Authentifizierung an API bei aktivierter 2FA:

                                        https://testdavid.church.tools/api/whoami?login_token=$LOGIN_TOKEN&user_id=$USER_ID

                                        Authentifizierung im GET Parameter? Echt jetzt?

                                        M 1 Reply Last reply Reply Quote 0
                                        • M
                                          Marcel @fodinabor
                                          last edited by

                                          @fodinabor

                                          1. HTTPS
                                          2. Token
                                          F 1 Reply Last reply Reply Quote 0
                                          • F
                                            fodinabor @Marcel
                                            last edited by

                                            @Marcel

                                            1. https://blog.httpwatch.com/2009/02/20/how-secure-are-query-strings-over-https/
                                              ja, ich weiß, das wird selten im Browser direkt verwendet werden, es fördert aber unsichere Nutzung der API, Webserver Logs bleiben und einige Nutzer werden möglicherweise die API aus einem Firmennetz / Rechenzentrum raus aufrufen, wo es üblich ist Traffic zu analysieren und HTTP(S) Requests zu loggen... Instagram hatte da letztens Spaß:
                                            • https://www.heise.de/security/meldung/Instagram-DSGVO-Tool-verraet-Nutzerpasswoerter-im-Klartext-4224308.html
                                            • eTLS: https://www.heise.de/security/meldung/Verschluesselung-Europaeischer-Abhoer-Standard-veroeffentlicht-4220967.html
                                            1. Das Token ersetzt das Passwort perfekt... User ID + Token == Username + Passwort
                                              Du kannst dich vll. nicht direkt in der CT Oberfläche anmelden, hast über die API aber exakt die gleichen Rechte.
                                            M 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post