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 <br>(e.g. mobile app)
participant kong as Gateway
participant idp as IdP <br>(e.g. Keycloak)
participant httpbin as Upstream <br>(upstream service,<br> e.g. httpbin)
activate client
activate kong
client->>kong: Service with<br>basic authentication
deactivate client
kong->>kong: load basic<br>authentication credentials
activate idp
kong->>idp: IdP/token<br>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 clientIn 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 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://ISSUER_ID.REGION.identity.konghq.com/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. -
TOKEN_SALT: A random string that decK requires (v1.59 and later) so session credentials aren’t regenerated on every sync. This parameter is optional for other formats. For example, generate one withopenssl rand -base64 16.