Für die Umsetzung von Autorisierung werden in der Datenbank 3 Tabellen für die Verwaltung von Benutzer, Rollen und Rechte benötigt, die jeweils durch eine n:m Relation miteinander verknüpft sind. Per Assistent können Sie sich die entsprechenden Entities dafür generieren lassen. Zusätzlich werden die Entities durch ein Mapping miteinander verknüpft. Dadurch kann RapidClipse mit belibigen Bezeichnungen von Entities und Attributen umgehen. Falls das Standard-Mapping für Ihre Datenstruktur ungeeignet ist, können Sie dafür benutzerdefinierte Abfragen definieren.
Auch wenn Sie die Authentifizierung via LDAP nutzen, müssen Sie die Benutzer in einer Datenbanktabelle speichern, um Benutzer und Rollen miteinander verknüpfen zu können. Benutzer und Rollen müssen zur Laufzeit synchronisiert werden.
Benötigte Datenstruktur allgemein
Benutzer - Speicherung von Benutzername, Passwort und ggf. zusätzliche nutzerspezifische Informationen. In RapidClipse APIs verwendete Bezeichnungen: User, Subject.
Rollen - Speicherung der Rollen die ein Benutzer besitzen kann. In RapidClipse APIs verwendete Bezeichnungen: Roles, Usergroups, Userroles.
Rechte - Speicherung der Rechte die eine Rolle besitzen kann. In RapidClipse APIs verwendete Bezeichnungen: Permissions, Resources.
Von RapidClipse generierte Datenstruktur
Entities
DAOs NameEntity Attribute Datentyp Erklärung User username String
Speichert den Benutzernamen als String. password byte[] Speichert das Passwort als Byte-Array, i.d.R. verschlüsselt. roles Set Liste aller Rollen. Role name String
Speichert die Bezeichnung der Rollen als String. resources Set Liste aller Rechte. childRoles Set Liste aller Rollen. parentRoles Set Liste aller Rollen. users Set Liste aller Benutzer. Resource name String
Speichert die Bezeichnung einer Berechtigung als String. roles Set Liste aller Rollen. Data Access
UserDAO
RoleDAO
ResourceDAO
Umgang mit vorhandener Datenbank - Sind in Ihrer Datenbank bereits Tabellen für die Verwaltung von Benutzern, Rollen und Rechten vorhanden, stellen Sie sicher, dass für jede Tabelle ein entsprechendes Entity mit dazugehörigem DAO in Ihrem Project Management unter Entities bzw. Data Access vorhanden ist. Falls nicht, können Sie die fehlenden Entities und DAOs mit der Import-Funktion Create JPA entities from table generieren lassen. Abweichende Tabellen- und Datenfeldnamen stellen auf Grund des später durchgeführten Mappings kein Problem dar.
Hinweis:
Synchronisierung - Die Entities User und Usergroups müssen zur Laufzeit synchronisiert werden.
Resource Tabelle definieren / generieren
- Entity für Berechtigungen bereits vorhanden - Wählen Sie Ihr bereits vorhandenes Entity aus.
Noch kein Resource Entity vorhanden - Klicken Sie auf New Entity... um ein neues Entity Resource inklusive DAO ResourceDAO anzulegen. - Wählen Sie bei Mapping > Resource name das Attribut zur Speicherung der Benutzerrechte aus.
- Klicken Sie auf Next >.
Optionen:
Resource name - Auswahl des Attributs für die Bezeichnung der Benutzerrechte.
Ergebnis:
Project Management > Entities - Es wird die Entity-Klasse Resource.java generiert oder durch Auswahl ein bereits existierendes Entity verwendet.
Entity Attribute Datentyp Resource name String Project Management > Data Access - Es wird die DAO-Klasse ResourceDAO.java generiert. Bei Auswahl eines bereits existierenden Entities wird kein neues DAO generiert.
...
Ergebnis:
Project Management > Entities
Role - Die Entity-Klasse Role.java wird um das Attribut users erweitert.
Liste aller Benutzer.Entity Attribute Datentyp Role name String resources Set childRoles Set parentRoles Set users Set User - Die Entity Klasse User.java wird um das Attribut roles erweitert.
Entity Attribute Datentyp Erklärung
StringUser username
Speichert den Benutzernamen als
.String password byte[] Speichert das Passwort, i.d.R. verschlüsselt als Byte-Array.
Liste aller Rollen.roles Set
Project Management > Data Access - Es wird die DAO-Klasse RoleDAO.java generiert. Bei Auswahl eines bereits existierenden Entities wird kein neues DAO generiert.
Project Management > Business Objects - Es wird die Klasse ExampleAuthorizationProvider.java generiert.
Code Block language java theme Confluence pac return this.authenticator; } }
Datenbanktabellen für generierte Entities anlegen - Für die neu generierten Entities müssen entsprechende Tabellen in der Datenbank angelegt werden. Dafür bietet Ihne RapidClipse eine Export-Funktion.
...