User info authenticationv1.0+

Configure the OpenID Connect plugin to use user info authentication.

Here’s how user info auth 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>access token
    deactivate client
    kong->>kong: load access token
    activate idp
    kong->>idp: IdP/userinfo<br>with access token
    deactivate kong
    idp->>idp: verify access token
    activate kong
    idp->>kong: return user info <br>response
    deactivate idp
    kong->>kong: verify response<br>status code (200)
    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 OpenID Connect plugin will only accept bearer tokens sent in a header, but you can also set the bearer_token_param_type parameter to body, query, or any combination of these values.

For a complete example of authenticating with a token retrieved through Keycloak’s user info endpoint, see the tutorial for configuring OpenID Connect with user info.

Note: Setting config.client_auth to client_secret_post lets 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 configured identity provider (IdP)

Environment variables

  • ISSUER: The issuer authentication URL for your IdP. For example, if you’re using Keycloak as your IdP, the issuer URL looks like this: http://localhost:8080/realms/example-realm

  • 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.

  • 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 with openssl rand -base64 16.

Set up the plugin

Help us make these docs great!

Kong Developer docs are open source. If you find these useful and want to make them better, contribute today!