GEDOPLAN
QuarkusJakarta EE (Java EE)

Quarkus-Demo zu JDBC-basierter Security

QuarkusJakarta EE (Java EE)
padlock 428549 640 jpg

Viele Anwendungen speichern User- und Berechtigungsdaten in Datenbank-Tabellen. Mit Hilfe der Extension quarkus-elytron-security-jdbc ist es sehr einfach, in Quarkus-Anwendungen Security-Daten aus Tabellen zu nutzen. Die Daten gehen dabei in das Standard-Security-System von Jakarta EE ein und können dann bspw. programmatisch genutzt werden:

  @GET
  @Path("name")
  @Produces(MediaType.TEXT_PLAIN)
  public String getName(@Context SecurityContext securityContext) {
    Principal userPrincipal = securityContext.getUserPrincipal();
    return userPrincipal != null ? userPrincipal.getName() : null;
  }

Mit den üblichen Annotationen ist auch eine deklarative Nutzung möglich:

  @GET
  @Path("restricted")
  @RolesAllowed("demoRole")
  @Produces(MediaType.TEXT_PLAIN)
  public String restricted() {
    return "OK";
  }

Zur Konfiguration reichen zwei SQL Queries mit ein paar Zusatz-Properties:

quarkus.security.jdbc.enabled=true
quarkus.security.jdbc.principal-query.sql=SELECT u.CRYPTED_PWD FROM SHOWCASE_USERS u WHERE u.ID=?
quarkus.security.jdbc.principal-query.bcrypt-password-mapper.enabled=true
quarkus.security.jdbc.principal-query.bcrypt-password-mapper.password-index=1
quarkus.security.jdbc.principal-query.bcrypt-password-mapper.salt-index=-1
quarkus.security.jdbc.principal-query.bcrypt-password-mapper.iteration-count-index=-1

quarkus.security.jdbc.principal-query.roles.sql=SELECT r.ROLE FROM SHOWCASE_ROLES r WHERE r.USER_ID=?
quarkus.security.jdbc.principal-query.roles.attribute-mappings.0.index=1
quarkus.security.jdbc.principal-query.roles.attribute-mappings.0.to=groups

Die Beispiele stammen aus unserer Quarkus-Demo-Anwendung quarkus-security-jdbc, die in https://github.com/GEDOPLAN/quarkus-demo enthalten ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

needle 4854847 640 jpg
Spring

Spring Data REST

Klassischerweise gliedern wir REST basierte Anwendung unter anderem in 3 Teile: Controller (Definition der REST Schnittstelle), Service (Businesslogik und Konvertierungen)…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!