0
votes

We have a requirement where we need some service-to-service communication between two Quarkus microservices. The infrastructure is the following:

Authentication is done by another IDP application.

Service 1:

  • implements main domain logic
  • primarily used by the frontend
  • API is called with authenticated user (openID, JWT)
  • endpoints are secured with @RolesAllowed("XY")

Service 2:

  • should use secured API from Service 1
  • Service 1 API will not be called with authenticated user (execution by task scheduler and not frontend)

My main problem: if Service 2 would directly be called from the frontend, the solution would be to easily pass through the JWT token from Service 2 to Service 1. But since Service 2 is not called in the context of a user I don't have a JWT token which I can pass.

How should Service 2 authenticate with Service 1 in such a scenario?

1

1 Answers

0
votes

Either you use the client credentials flow between Service 1 and Service 2, so that they can communicate securely without any user involvement. This means that they can communicate even when no user is present.

The alternative is to use Delegation Tokens, see these links