REST API Aufruf-Authentifizierung per Token möglich?

Thema wurde von iloki, 29. Mai 2019 erstellt.

  1. iloki

    iloki Erfahrener Benutzer

    Registriert seit:
    15. August 2017
    Beiträge:
    54
    Danke erhalten:
    3
    Danke vergeben:
    3
    #1 iloki, 29. Mai 2019
    Zuletzt bearbeitet: 29. Mai 2019
    Hallo zusammen,

    hab ich es richtig verstanden das nun auch die REST-API per Token anstatt über Benutzer/Passwort aufgerufen und authentifiziert werden kann?

    Wie wäre die URL... wie bisher mit &token=... (ähnlich dem Cron-Job Aufruf) funktioniert leider nicht.
    Erzeugt hatte ich das Token unter "Rechte und Rollen" im entsprechenden Nutzer.

    Der REST-API Bearer-Aufruf Test via curl mittels des Tokens klappt auch nicht (Authentifizierung verweigert):
    Code:
    curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://{hostname}/api/myresource
    Angeblich soll dies funktionieren:
    GX-Bug #58406 REST-API: Token-basierte Authentifizierung
    https://tracker.gambio-server.net/issues/58406


    Es geht nicht um bestehende Module in Sachen IT-Recht Kanzlei etc.


    Danke & Grüße!
     
  2. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.310
    Danke vergeben:
    2.208
    Das funktioniert. Man muss das als JSON Web Token senden, am besten im HTTP Header. Technik ist hier erklärt:
    https://de.wikipedia.org/wiki/JSON_Web_Token

    Kann man auch gut mit Postman ausprobieren, dort als Bearer Token senden.
     
  3. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.761
    Danke erhalten:
    1.372
    Danke vergeben:
    305
    Hi,

    das ist ab der Shopversion 3.11.1.0 möglich.

    Mit folgendem Befehl hat es in meinem Testshop ohne Probleme funktioniert:

    curl -H 'Accept: application/json' -H "Authorization: Bearer token" (Link nur für registrierte Nutzer sichtbar.)
     
  4. iloki

    iloki Erfahrener Benutzer

    Registriert seit:
    15. August 2017
    Beiträge:
    54
    Danke erhalten:
    3
    Danke vergeben:
    3
    Danke für die schnelle Rückmeldung, die Authorisierung scheint er jetzt grundsätzlich zu akzeptieren, irgendwie scheint der Nutzer aber nicht über ausreichend Rechte zu verfügen. Habe soeben nochmal die Rolle gecheckt und alles zur API freigegeben und den Nutzer erneut zugewiesen - gleiches Problem weiterhin.

    Noch eine Idee was an Rechten noch fehlen könnte?

    Gleicher Nutzer mit Zugriff per URL auf die API und AuthBasic funktioniert wunderbar - vor und nach der Einstellungs-Veränderung von oben.
    Vielleicht noch irgendwas, was ich übersehen haben könnte?
    Vielleicht im Rahmen der Updates irgendwas nicht korrekt angepasst was zur Authentifizierung via JWT nötig wäre?

    Query:
    Code:
    :~# curl -H 'Accept: application/json' -H "Authorization: Bearer ..." "http://meinedomain.de/api.php/v2/shop_information"
    Antwort:
    Code:
    {
        "code": 0,
        "status": "error",
        "message": "permission denied",
        "request": {
            "method": "GET",
            "url": "http://meinedomain.de",
            "path": "/api.php/v2/shop_information",
            "uri": {
                "root": "/api.php",
                "resource": "/v2/shop_information"
            }
        },
        "error": {
            "file": "/var/www/GXMainComponents/Controllers/Api/v2/ApiV2Authenticator.inc.php",
            "line": 201,
            "stack": [
                {
                    "file": "/var/www/GXMainComponents/Controllers/Api/v2/ApiV2Authenticator.inc.php",
                    "line": 62,
                    "function": "authorizeBearer",
                    "class": "ApiV2Authenticator",
                    "type": "->",
                    "args": [
                        "ShopInformationApiV2Controller"
                    ]
                },
    
    Danke & Grüße!
     
  5. iloki

    iloki Erfahrener Benutzer

    Registriert seit:
    15. August 2017
    Beiträge:
    54
    Danke erhalten:
    3
    Danke vergeben:
    3
    Fehler gefunden! Das API-Token - welches bereits mit einer älteren Version erzeugt wurde - scheint nicht mehr nutzbar (obwohl noch gültig) zu sein. Mit einem neu-generierten Token funktionierte es nun auf Anhieb.

    Hatte sich hier im Rahmen von Updates irgendetwas geändert?

    Wir hatten vorher gestestet ob es an:
    • Zur langen Token-Laufzeit (ähnlich SSL-Zertifikaten)
    • nicht-genutzten SSL (Entwicklungssystem) Verbindung/https
    läge, dem war aber nicht so - diese Einschränkungen sind nicht gegeben.

    Ich würde mir noch eine Funktion wünschen, Tokens löschen (und ungültig machen) zu können. Wir haben diese nun händisch aus der Datenbank entfernt.
     
  6. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.310
    Danke vergeben:
    2.208
    Nanu. Da hätte sich nicht absichtlich etwas verändert - wir hätten soweit auch keine Kenntnis davon.

    Müssen wir uns mal anschauen.