© Excellent backgrounds/Shutterstock.com
Kolumne: EnterpriseTales

Autorisierung mit dem JSON Web Token in Enterprise Java


Authentifizierung mit dem JSON Web Token ist mittlerweile State of the Art in verteilten Systemlandschaften. Aber wie sieht es beim Thema Autorisierung aus? Diese Kolumne wirft einen Blick darauf, wie und in welchem Umfang Autorisierung mit dem JSON Web Token in Spring (Boot) und MicroProfile möglich ist und wo es Grenzen gibt.

Der Prozess der Authentifizierung ist auch in verteilten Anwendungen mittlerweile weitestgehend standardisiert. In modernen Systemen werden Verfahren wie OpenID Connect und OAuth 2 verwendet. Als Austauschformat für die Authentifizierungsinformationen kommt in der Regel das JSON Web Token (JWT) zum Einsatz. Wie aber sieht es mit den Autorisierungsinformationen aus?

Standardisierte Informationen im JWT

Bei der Authentifizierung geht es im Gegensatz zur Autorisierung darum, den Benutzer zu identifizieren. Es gibt verschiedene Arten dieser Identifizierung. Die einfachste und häufigste ist die Identifizierung über Benutzername und Kennwort. Wurde der Benutzer von einem Authentication Server identifiziert, müssen die gewonnenen Informationen zum Applikationsserver übermittelt werden. Bei den Verfahren mit JSON Web Token geschieht das dadurch, dass der Authentication Server für den Benutzer ein solches Token ausstellt und dem Benutzer übermittelt. Dieser kann es dann an den Applikationsserver weiterreichen. Da der Authentication Server das Token signiert hat, kann der Applikationsserver diese Signatur überprüfen und so sicher sein, dass die Informationen aus dem Token tatsächlich vom Authentication Server stammen.

Dabei kann ein JWT theoretisch beliebige Informationen enthalten, allerdings gibt es einige Standardinformationen (Claims), die enthalten sein sollten, wie Subject (sub), Issuer (iss) und Expiration Time (exp) [1].

Autorisierung in verteilten Architekturen

Im Gegensatz zur Authentifizierung geht es bei der Autorisierung zum einen darum, zu klären, ob der aktuelle Benutzer eine Aktion durchführen darf, und zum anderen darum, die Aktion zu verhindern, wenn er es nicht darf (Access Control). Eine gängige Art, die Rechte von Benutzern festzulegen, ist die Einteilung von Benutzern in Benutzergruppen. Diesen werden dann Rollen zugeordnet, und für die Rollen werden Rechte vergeben.

In einer verteilten Systemlandschaft stellt sich bei der Wahl der Benutzergruppen zunächst die Frage, ob diese Gruppen global für alle Services gültig sind oder ob es spezifische Benutzergruppen gibt, die nur für bestimmte Services relevant sind. Häufig f...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang