Passing metadata in headers
The OpenID Connect plugin can pass claim values, tokens, JWKs, and the session identifier to the upstream service in request headers, and to the downstream client in response headers.
By default, the plugin passes an access token in an Authorization: Bearer $ACCESS_TOKEN
header to the upstream service.
You can change this header name in config.upstream_access_token_header
.
The claim values can be taken from:
- An access token
- An ID token
- An introspection response
- A user info response
The following example assumes that the token payload contains the claim preferred_username
,
and that you want to pass it to an Authenticated-User
upstream header.
Note: Setting
config.client_auth
toclient_secret_post
lets 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 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.
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: openid-connect
config:
issuer: ${{ env "DECK_ISSUER" }}
client_id:
- ${{ env "DECK_CLIENT_ID" }}
client_secret:
- ${{ env "DECK_CLIENT_SECRET" }}
client_auth:
- client_secret_post
auth_methods:
- password
upstream_headers_claims:
- preferred_username
upstream_headers_names:
- authenticated_user