Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

...

  • 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

      EntityAttributeDatentypErklärung
      UserusernameStringSpeichert den Benutzernamen als String.
      passwordbyte[]Speichert das Passwort als Byte-Array, i.d.R. verschlüsselt.
      rolesSetListe aller Rollen.
      Role


      nameStringSpeichert die Bezeichnung der Rollen als String.
      resourcesSetListe aller Rechte.
      childRolesSetListe aller Rollen.
      parentRolesSetListe aller Rollen.
      usersSetListe aller Benutzer.
      ResourcenameStringSpeichert die Bezeichnung einer Berechtigung als String.
      rolesSetListe 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. 

...

  1. 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. 
  2. Wählen Sie bei Mapping > Resource name das Attribut zur Speicherung der Benutzerrechte aus.
  3. 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.

    EntityAttributeDatentyp
    ResourcenameString
  • 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.  

      EntityAttributeDatentyp
      Role


      nameString
      resourcesSet
      childRolesSet
      parentRolesSet
      usersSet
    • User - Die Entity Klasse User.java wird um das Attribut roles erweitert.

      EntityAttributeDatentyp
      UserusernameString
      passwordbyte[]
      rolesSet
  • 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
    languagejava
    themeConfluence
    pacpackage com.company.example.business;
    
    import com.company.example.entities.Resource;
    import com.company.example.entities.Role;
    import com.company.example.entities.User;
    import com.xdev.security.authorization.AuthorizationConfiguration;
    import com.xdev.security.authorization.AuthorizationConfigurationProvider;
    import com.xdev.security.authorization.jpa.JPAAuthorizationConfigurationProvider;
    
    public class ExampleAuthorizationConfigurationProvider implements AuthorizationConfigurationProvider {
    	private static ExampleAuthorizationConfigurationProvider INSTANCE;
    
    	public static ExampleAuthorizationConfigurationProvider getInstance() {
    		if (INSTANCE == null) {
    			INSTANCE = new ExampleAuthorizationConfigurationProvider();
    		}
    
    		return INSTANCE;
    	}
    
    	private JPAAuthorizationConfigurationProvider provider;
    
    	private ExampleAuthorizationConfigurationProvider() {
    	}
    
    	@Override
    	public AuthorizationConfiguration provideConfiguration() {
    		if (this.provider == null) {
    			this.provider = new JPAAuthorizationConfigurationProvider(User.class, Role.class, Resource.class);
    		}
    
    		return this.provider.authenticatorprovideConfiguration();
    	}
    }


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. 

...