This repository contains example OAuth 2.0 resource servers built with Micronaut, Quarkus, Spring Boot, and Helidon. See this demo script to learn how these apps were created.
Visit @oktadev/auth0-java-reactive-examples for examples using the reactive versions of these frameworks.
Prerequisites: Java 21 with GraalVM and HTTPie.
Click the button below to start a new Gitpod development environment:
Or, if you'd rather try things locally, clone this repository:
git clone https://github.com/oktadev/auth0-java-rest-api-examples.git
You will need a JDK with GraalVM and its native-image compiler. Using SDKMAN, run the following command and set it as the default:
sdk install java 21.0.2-graalce
Next, you'll need a free Auth0 developer account.
Install the Auth0 CLI and run auth0 login
to connect it to your account.
Create an access token using Auth0's CLI:
auth0 test token -a https://<your-auth0-domain>/api/v2/ -s openid
Set the access token as a TOKEN
environment variable in a terminal window.
TOKEN=eyJraWQiOiJYa2pXdjMzTDRBYU1ZSzNGM...
Change the following files for each framework to match your Auth0 domain:
- Micronaut:
micronaut/src/main/resources/application.properties
- Quarkus:
quarkus/src/main/resources/application.properties
- Spring Boot:
spring-boot/src/main/resources/application.properties
- Helidon:
helidon/src/main/resources/META-INF/microprofile-config.properties
You can start each app using its CLI, Gradle, or Maven. Note that you will only be able to start one at a time since they all run on port 8080.
- Micronaut:
./gradlew run
- Micronaut AOT:
./gradlew optimizedRun
- Quarkus:
quarkus dev
- Spring Boot:
./gradlew bootRun
- Helidon:
helidon dev
Then, you can test them with an access token and HTTPie.
Use HTTPie to pass the JWT in as a bearer token in the Authorization
header.
http :8080/hello Authorization:"Bearer $TOKEN"
You should see your email address printed to your terminal.
You can also build and run each example as a native app.
- Micronaut:
./gradlew nativeCompile
- Micronaut AOT:
./gradlew nativeOptimizedCompile
- GraalVM executable compiled with Micronaut AOT optimizations - Quarkus:
quarkus build --native
- Spring Boot:
./gradlew nativeCompile
- Helidon:
mvn package -Pnative-image
Then, start each app as a native executable.
- Micronaut:
./build/native/nativeCompile/app
- Micronaut AOT:
./build/native/nativeOptimizedCompile/app
- Quarkus:
./build/quarkus-1.0.0-SNAPSHOT-runner
- Spring Boot:
./build/native/nativeCompile/spring-boot
- Helidon:
./target/helidon
This example uses the following open source libraries:
Please post any questions as issues in this repo or on the Auth0 Community Forums.
Apache 2.0, see LICENSE.