JSON und die (UA)Argonauten – Sicheres Fahrwasser für die Definition von Autorisierungsregeln

Autorisierung ist ein zentraler und sicherheitskritischer Bestandteil von Enterprise Applikationen. Daher ist es insbesondere auf diesem Gebiet von großer Bedeutung, die Arbeit für Entwickler so klar und einfach wie möglich zu machen. Das neue A12 Release 2024.06-ext4 bietet deshalb umfangreiche Verbesserungen der Developer Experience mit den Autorisierungsregeln der UAA Komponente in IntelliJ und VS Code.

Wer darf unter welchen Umständen die Adresse eines privaten Kunden sehen? Wer hat Einblick die die Gehaltsdaten der Mitarbeiter? Wer benötigt Zugriff auf Zeitbuchungen? Diese und ähnliche Fragen stellen sich in zahlreichen Enterprise Software Projekten. Um Nutzergruppen und Zugriffsrechte sicher zu verwalten, bietet A12 die Komponente User Authentication and Authorisation (UAA). Während rollen-basierte Autorisierung direkt im Simple Model Editor vorgenommen werden kann, werden attribut-basierte Regeln, wie etwa Zugriff auf Nutzerdaten nur für entsprechend zugewiesene Sachbearbeiter, in einer JSON-Datei gepflegt. Diese Datei nimmt im Kontext von Enterprise Projekten häufig einen großen Umfang an. Die Menge an Regeln erschwert nicht nur die Übersicht. Sie kann auch schnell dazu führen, dass z.B. Tippfehler oder definierte, aber nicht genutzte Regeln übersehen werden. Diese und weitere Herausforderungen adressiert das UAA Update im neuen A12 Release.

Was ist neu?

Highlighting

Die offensichtlichste Änderung nach dem Öffnen der JSON Datei ist wohl das Code Highlighting. Während das gewöhnliche JSON-Highlighting in VS Code und IntelliJ mit nur zwei Textfarben auskommt wird jetzt z.B. zwischen Bezeichnungen, Key-Words, Policies und Policy-Referenzen unterschieden:

Abbildung 1: Code Highlighting in IntelliJ (links: alt, rechts: neu)

Aber nicht nur der JSON-Code selbst hat ein neues Highlighting erhalten, auch ein Grammatik-Highlighting ist im neuen Release enthalten. So werden Warnungen entsprechend der Spring-Expression-Syntax dargestellt, oder Policy-Definitionen markiert, die im Code nicht genutzt werden. Diese Änderungen unterstützen Entwickler dabei, die relevanten Informationen schneller zu erkennen.

Automatische Vervollständigung

Natürlich lesen Entwickler die JSON-Datei nicht nur, sondern nehmen auch Änderungen oder Erweiterungen vor. Dabei unterstützt in Zukunft die automatische Vervollständigung, welche eine Liste definierter Ressourcen mit Angabe der jeweiligen Entität vorschlägt. Dieser Mechanismus macht die Eingabe nicht nur schneller, sondern reduziert auch das Risiko von Tippfehlern.

Abbildung 2: Automatische Vervollständigung in IntelliJ

Schnellere Navigation

Ein mächtiges Werkzeug um die Autorisierungs-JSON-Datei schneller zu verstehen und zu bearbeiten ist eine intuitive Navigation, die es ermöglicht, von der Nutzung einer Policy zu deren Definition und wieder zurück zu kommen, ohne einen umständlichen Umweg über Strg+F zu gehen. Deshalb ist auch ein entsprechendes Feature für schnelle Navigation im UAA Update des neuen A12 Releases enthalten. Sie ermöglicht es, zwischen Root-Definitions und den Permissions die diese Definitionen nutzen zu springen.

Abbildung 3: Schnelle Navigation in IntelliJ

Wie nutze ich diese neuen Funktionen?

Die Funktionen basieren auf dem Language Server Protokoll (LSP) und werden als npm Paket (uaa-authorization-language-server) zur lokalen installation bereitgestellt. Um den Language Server tatsächlich nutzen können, benötigt es entsprechende Plug-ins – “Isp4ij” für IntelliJ und “Generic LSP CLient” für VS Code. Neben der Installation der Plug-ins sind weitere Konfigurationsschritte notwendig, die in der UAA Dokumentation zu finden sind.

Fazit

Das neue A12 Release bringt massive “Quality-of-Life” Verbesserungen für alle Entwickler, die mit der Autorisierung der UAA Komponente arbeiten. Dabei liegen die Vorteile vordergründig natürlich vor allem in einer Reduktion des Zeitaufwandes und des Frustrationspotentials. Dicht daran gekoppelt ist aber auch eine Reduktion des Risikos, dass Sicherheitslücken entstehen – sei es durch fehlende Übersicht, mangelnde Fehlerindikatoren oder Tippfehler. Damit wird dieses Update nicht nur die Arbeit von Entwicklern vereinfachen, sondern auch die Sicherheit der Anwendung verbessern.

Weitere Informationen: