Gut entwickelte Headless-Fähigkeiten sind ein starkes Merkmal der Ibexa DXP. REST API und GraphQL, die "out of the box" verfügbar sind, sind leistungsstark, schnell und zuverlässig und bieten Zugriff auf alle Kernfunktionen des Produkts. Diese APIs werden von Entwicklern häufig zur Erstellung eleganter Front-End-JavaScript-Einzelseitenanwendungen, zur Verbindung eigenständiger mobiler Anwendungen sowie für viele andere Fälle verwendet.

Der Technologiemarkt verändert sich rasant, insbesondere wenn es um Authentifizierung, Autorisierung oder allgemein um die Kommunikation zwischen verschiedenen Diensten geht. 

Aufgrund ihrer Natur ist die Authentifizierung immer ein wenig heikel. Die breite Palette verfügbarer Lösungen macht es nicht einfacher, da es nicht möglich wäre, sie alle in Ibexa's DXP zu überwachen, zu implementieren und auszuliefern.  

Wir sind also stolz darauf, einen Schritt nach vorn zu machen und eine neue Methode der Authentifizierung gegen unsere Public Headless APIs einzuführen. Bisher war es nur möglich, auf sie entweder über sitzungsbasierte Authentifizierung oder HTTP-Basisauthentifizierung zuzugreifen. Mit der Version 3.2 führen wir eine neue, moderne Authentifizierungsmethode ein - JSON Web Token (JWT). JWT ist eine sichere, schnelle und anerkannt einfache Technologie, die es schon seit einiger Zeit gibt und die in der modernen Webentwicklungswelt weit verbreitet ist.

JSON Web Token - JWT

JWT ist ein Mechanismus, der im Zusammenhang mit Web-APIs, aber auch im weiteren Sinne in den allgemeinen Begriffen Web- und mobile Anwendungen verwendet wird. Anstelle der Verwendung eines traditionellen Session-Cookies oder HTTP-basierter Auth-Header wird bei dieser Methode ein eindeutiges Token generiert, das für jede einzelne Anfrage, die eine Berechtigungsprüfung erfordert, verwendet werden muss. Ein solches Token hat seine TTL (Time To Live), nach der es nicht mehr verwendbar ist und ein neues Token erneut generiert werden muss.  

Die Berechtigungsnachweise müssen nur einmal an die Anwendung gesendet werden, wenn ein neues Token angefordert wird. Einmal generiert, reicht das Token allein aus, um sich erfolgreich im System zu authentifizieren.

Weitere Informationen finden sich unter JWT.io

Konfiguration in Ibexa DXP

In v3.2 der Ibexa DXP ist die JWT-Authentifizierung ein Opt-in-Feature. Sie muss also aktiviert werden, um verfügbar zu sein.

Da es bisher ausschließlich für die Authentifizierung in Page Builder verwendet wurde, ist die Funktion bereits installiert. Auch sollten bereits einige Konfigurationen im System verfügbar sein. Einige grundlegende Konfigurationen sind in der Datei config/packages/lexik_jwt_authentication.yaml zu finden. Im Gegensatz zu dem, was Page Builder benötigt, erfordert die vollständige JWT-Unterstützung die Aktivierung der authorization_header Option.

Die gesamte Konfiguration könnte wie folgt aussehen:

Gesamte Konfiguration

Darüber hinaus wird auch eine neue Symfony Firewall benötigt. Sie sollte vor ezpublish_front in der Datei config/packages/security.yaml definiert werden.

Für REST API sollte die folgende Firewall konfiguriert werden:

Konfiguration REST API

Für GraphQL ist es fast dasselbe:

Konfiguration GraphQL

In der neuesten Version sind diese Firewalls bereits in der Standardkonfigurationsdatei enthalten.

Verwendung

Diese neue Funktion fügt einen neuen REST-API-Endpunkt und eine GraphQL-Mutation hinzu, die aufgerufen werden kann, um ein Token zu erhalten.

Method

POST

Endpoint

/api/ezp/v2/user/token/jwt

Accept header

application/vnd.ez.api.JWT+json

Content-Type header

application/vnd.ez.api.JWTInput+json

Beispiel für eine Anfrageinstanz:

Anfrageinstanz

Und die erwartete Antwort, wenn die angegebenen Berechtigungsnachweise gültig sind:

Antwort

Jetzt muss das Token als Wert für die Inhaber-Token-Authentifizierungsmethode in der Client-Anwendung festgelegt werden.

Zusammenfassung

Diese neue bequeme Authentifizierungsmethode trägt dazu bei, dass Ibexa's DXP ein noch besseres Entwicklererlebnis bietet, indem es die Arbeit mit Headless schneller, unkomplizierter und reibungsloser macht. In der kommenden Version wird es weitere Verbesserungen für Entwickler geben!

Quelle: https://www.ibexa.co/de/blog/new-feature-preview-jwt-authentifizierung-fuer-rest-api-und-graphql-in-v3.2