Client credentials grant in header with Kong Identityv1.0+
Configure the OpenID Connect plugin with the client credentials grant.
Here’s how the client credentials grant works:
sequenceDiagram
autonumber
participant client as Client
(e.g. mobile app)
participant kong as API Gateway
(Kong)
participant idp as IdP
(e.g. Keycloak)
participant httpbin as Upstream
(upstream service,
e.g. httpbin)
activate client
activate kong
client->>kong: Service with
basic authentication
deactivate client
kong->>kong: load basic
authentication credentials
activate idp
kong->>idp: IdP/token
with client credentials
deactivate kong
idp->>idp: authenticate client
activate kong
idp->>kong: return tokens
deactivate idp
kong->>kong: verify tokens
activate httpbin
kong->>httpbin: request with access token
httpbin->>kong: response
deactivate httpbin
activate client
kong->>client: response
deactivate kong
deactivate client
In this example, the plugin will only accept client credentials sent in a header,
but you can also set the client_credentials_param_type parameter to body, query, or any combination of these values.
This example uses a Kong Identity authorization server hosted on Konnect. To use an external authorization server like Keycloak, see configuring OpenID Connect with the client credentials grant.
Note: Setting
config.client_authtoclient_secret_postlets you easily test the connection to your IdP, but we recommend using a more secure auth method in production. You can use any of the supported client auth methods.
Prerequisites
-
- A Kong Identity principal configured with an OIDC identity
- A Kong Identity authorization server
Environment variables
-
ISSUER: The issuer authentication URL for your IdP. As this example uses Kong Identity as the IdP, the issuer URL should look likehttps://xxx.<region>.identity.konghq.tech/auth. -
CLIENT_ID: The client ID that the plugin uses when it calls authenticated endpoints of the IdP. -
CLIENT_SECRET: The client secret needed to connect to your IdP. -
DIRECTORY_NAME: The name of the Kong Identity directory used for principals lookup.