Skip to content

Latest commit

 

History

History
 
 

security-jpa-quickstart

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Quarkus Elytron Security with JPA

This guide demonstrates how your Quarkus application can use a database and JPA to store your user identities.

Start the database

You need a database to store the user identities/roles. Here, we are using PostgreSQL. To ease the setup, we have provided a docker-compose.yml file which start a PostgreSQL container, bind the network ports and finally creates the users and their credentials by importing the import.sql file.

The database can be started using:

docker-compose up

Once the database is up you can start your Quarkus application.

Note you do not need to start the database when running your application in dev mode or testing. It will be started automatically as a Dev Service.

Start the application

The application can be started using:

mvn compile quarkus:dev

Test the application

From the CLI

The application exposes 3 endpoints:

  • /api/public
  • /api/admin
  • /api/users/me

You can try these endpoints with an http client (curl, HTTPie, etc). Here you have some examples to check the security configuration:

curl -i -X GET http://localhost:8080/api/public  # 'public'
curl -i -X GET http://localhost:8080/api/admin  # unauthorized
curl -i -X GET -u admin:admin http://localhost:8080/api/admin # 'admin'
curl -i -X GET http://localhost:8080/api/users/me # 'unauthorized'
curl -i -X GET -u user:user http://localhost:8080/api/users/me # 'user'

NOTE: Stop the database using: docker-compose down; docker-compose rm

Integration testing

We have provided integration tests based on Dev Services for PostgreSQL to verify the security configuration in JVM and native modes. The test and dev modes containers will be launched automatically because all the PostgreSQL configuration properties are only enabled in production (prod) mode.

The test can be executed using:

# JVM mode
mvn test

# Native mode
mvn verify -Pnative

Running in native

You can compile the application into a native binary using:

mvn clean package -Pnative

Note: You need to have a proper GraalVM configuration to build a native binary.

and run with:

./target/security-jpa-quickstart-1.0.0-SNAPSHOT-runner

NOTE: Don't forget to start the database.