This example uses JHipster 7 to generate a reactive microservices architecture with Spring Cloud Gateway and Spring WebFlux. See Reactive Java Microservices with Spring Boot and JHipster to see how it was built.
Prerequisites: Java 11 and Docker.
To install this example, run the following commands:
git clone https://github.com/oktadev/java-microservices-examples.git
cd java-microservices-examples/reactive-jhipster
The JHipster Registry and Spring Cloud Config are pre-configured to use Okta. That means if you try to run them, you won't be able to login until you create an account, and an application in it.
Install the Okta CLI using the instructions on cli.okta.com and come back here when you're done. If you don't have an Okta developer account, run okta register
.
NOTE: You can also use your browser and Okta's developer console to register an app. See JHipster's security documentation for those instructions.
From the gateway project's directory, run okta apps create jhipster
. Accept the default redirect URIs.
This process does several things:
- Registers an OIDC app in Okta with JHipster's configured redirect URIs.
- Creates
ROLE_ADMIN
andROLE_USER
groups and adds your user to both. - Creates a
groups
claim and adds it to ID tokens. - Creates a
.okta.env
file with the values you'll need to talk to Okta.
Spring Cloud Config allows you to distribute Spring's configuration between apps. Update gateway/src/main/docker/central-server-config/localhost-config/application.yml
to use your Okta app settings. You can find the values for each property in the .okta.env
file.
spring:
security:
oauth2:
client:
provider:
oidc:
issuer-uri: https://<your-okta-domain>/oauth2/default
registration:
oidc:
client-id: <client-id>
client-secret: <client-secret>
Save your changes. These values will be distributed to the JHipster Registry, gateway, blog, and store apps. Start all the services and apps using the following commands:
cd gateway
docker-compose -f src/main/docker/keycloak.yml up -d #jhkeycloakup
docker-compose -f src/main/docker/postgresql.yml up -d #jhpostgresqlup
docker-compose -f src/main/docker/jhipster-registry.yml up -d #jhregistryup
./gradlew
Open a new terminal window, start the blog app's Neo4j database, and then the app itself.
cd ../blog
docker-compose -f src/main/docker/neo4j.yml up -d #jhneo4jup
./gradlew
Then, open another terminal window, start the store app's MongoDB database, and the microservice.
cd ../store
docker-compose -f src/main/docker/mongodb.yml up -d #jhmongoup
./gradlew
Now, open a new incognito browser window, go to http://localhost:8080
, and sign in. Rejoice that using Okta for authentication works!
TIP: You can also run everything using Docker Compose. See the blog post for how to do that.
These examples uses the following open source libraries:
Please post any questions as comments on this example's blog post, or on the Okta Developer Forums.
Apache 2.0, see LICENSE.