Authentication for Authorize gateway endpoints
To enhance security for certain endpoints, the gateway instance can enforce client authentication using a shared secret.
Shared secrets are enforced per gateway instance and not shared between instances. To define a shared secret, use one of the available configuration methods to pass the authentication JSON object to your gateway instance.
Example authentication
object:
{
"authentication": {
"type": "sharedsecret",
"keys": ["example-secret-key"]
}
}
Configuration properties for the authentication
object:
-
type
: A constant set tosharedsecret
. -
keys
: An array containing shared secrets as strings.
Secret keys must be at least 128 bits. |
To avoid service interruptions, the gateway instance allows authenticated endpoints to accept multiple, distinct shared secrets at the same time. This allows time to update the gateway instance’s configuration to use a new shared secret.
For example:
{
"authentication": {
"type": "sharedsecret",
"keys": ["example-secret", "example-secret-2"]
}
}
After it’s enabled, the gateway instance will require authentication for the following endpoints:
-
/api/authorize
-
/actuator/state
-
/actuator/metrics
-
/actuator/metrics/*
-
Any request made to these endpoints must provide the configured shared secret with the Authorization
header.
For example:
curl --location 'http://localhost:8080/api/authorize' \ --header 'Authorization: Bearer example-secret' \ --header 'Content-Type: application/json' \ --data ' { "parameters": { "Amount": "990", "Account": "Basic checking", "Payment.consentId": "{{consentID}}" } }'
If you have defined multiple shared secrets for secret rotation, the |
Authentication is not supported for the following endpoints:
-
/actuator
-
/actuator/health
-
/actuator/health/liveness
-
/actuator/health/readiness
-