REST API Aufruf-Authentifizierung per Token möglich?

Thema wurde von iloki, 29. Mai 2019 erstellt.

  1. iloki

    iloki Erfahrener Benutzer

    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!
     
    Zuletzt bearbeitet: 29. Mai 2019
  2. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    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

  4. iloki

    iloki Erfahrener Benutzer

    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

    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

    Nanu. Da hätte sich nicht absichtlich etwas verändert - wir hätten soweit auch keine Kenntnis davon.

    Müssen wir uns mal anschauen.