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

IT-Training - GEDOPLAN
Webprogrammierung

Angular Directive, Hostbinding

Directive sind neben Komponenten eines der zentralen Konzepte in Angular. Anders als Components bringt eine Directive kein eigenes Template mit,…
IT-Training - GEDOPLAN
Jakarta EE (Java EE)

Jackson und Java EE 8

Jackson ist eine Bibliothek die sich unter anderem darum kümmert das unsere Businessobjekte in JSON umgewandelt werden. Als default Provider…

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!