02.02.2014 Aufrufe

Entwurf einer anwendungsunabhängigen Zugriffskontrolle mittels ...

Entwurf einer anwendungsunabhängigen Zugriffskontrolle mittels ...

Entwurf einer anwendungsunabhängigen Zugriffskontrolle mittels ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Implementierung der <strong>Zugriffskontrolle</strong><br />

„Logbook“ berücksichtigt werden sollen. Alle eingebundenen Pakete bzw. Klassen<br />

implementieren damit die Schnittstelle „SecuredClasses“, die als Stellvertreterobjekt für<br />

diese Klassen fungiert.<br />

Ideal wäre, wenn Anwendungsprogrammierer überhaupt keinen Code ändern müssten<br />

und auf die Definition von neuen Paketen im Autorisierungsaspekt verzichten könnten.<br />

Um dies zu erreichen, könnte man anstelle von Zeile 5 auch folgendes definieren:<br />

declare parents: *..* implements SecuredClasses;<br />

Hierdurch werden alle Pakete, die der Compiler findet, eingebunden. Aus<br />

Leistungsgründen und aufgrund möglicher zirkulärer Beziehungen wird hierauf<br />

verzichtet. Trotzdem ist <strong>mittels</strong> dieses Vorgehens eine schnellere Einbindung <strong>einer</strong><br />

Sicherheitslösung möglich, als wenn ein Sicherheits-Framework verwendet wird, da die<br />

Einbindung der <strong>Zugriffskontrolle</strong> fast ohne Programmieren erfolgen kann. Anpassungen<br />

können stattdessen durch einfaches Konfigurieren eingearbeitet werden.<br />

Falls doch programmiersprachliche Anpassungen notwendig werden, so sollten sie in<br />

dieser anwendungsspezifischen Aspektklasse erfolgen. Beim Fahrtenbuch waren<br />

folgende Änderungen notwendig.<br />

Das Fahrtenbuch kümmert sich selbst, um die Verwaltung s<strong>einer</strong> Benutzer und um die<br />

Authentifizierung. Um an die aktuelle Benutzeridentifikation zu gelangen, bietet der<br />

anwendungsspezifische Autorisierungsaspekt eine abstrakte Methode „getUserId“ an,<br />

die zu implementieren ist. In der Fahrtenbuch-Anwendung wird beispielsweise eine<br />

Sitzung bei jedem Methodenaufruf übergeben. Aus diesem Sitzungsobjekt wird <strong>mittels</strong><br />

der Methode „getUserId“ die aktuelle Benutzeridentifikation extrahiert.<br />

1. public UserIdentification getUserId(Object object){<br />

2. Session session = ((Session)object);<br />

3. String id = session.getUserID();<br />

4. return new UserIdentification(id);<br />

5. }<br />

Abbildung 26: Die Methode “getUserId” (eigene Abbildung)<br />

Weitere Anpassungen waren notwendig für die Ermittlung der Objektidentifikation, da<br />

die Objektidentifikation der Fahrtenbuch-Elemente verwendet werden sollte. Alternativ<br />

könnten auch die Objektreferenz als Objektidentifikator oder die Identifikationen der<br />

Ontologie „Complex Semantic Object“ verwendet werden. Des Weiteren wurde auch<br />

52

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!