Prepare HTTP Bearer Token Authentication
This how-to will explain how a Bearer Token can be requested from an authentication server. This will be required to connect the Service Catalog to the Service Broker.
Inspect the OpenID configuration
|
Below are To run
Now you get a terminal in which you can then run If you are more comfortable using
Now you get a terminal in which you can then run |
If you (or your company) use an OpenID compliant authentication server, you should be able to learn about the JWKS URL from the .well-known/openid-configuration JSON:
curl https://auth.corp.internal/.well-known/openid-configuration
The JSON will look like this:
{
"issuer": "auth.corp.internal",
"token_endpoint": "auth.corp.internal/token", (2)
"jwks_uri": "auth.corp.internal/jwks", (1)
"revocation_endpoint": "auth.corp.internal/revoke",
"scopes_supported": ["openid"],
"response_types_supported": [],
"response_modes_supported": [],
"grant_types_supported": ["client_credentials"],
"acr_values_supported": [],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["ES256"],
"token_endpoint_auth_methods_supported": ["client_secret_post"],
"token_endpoint_auth_signing_alg_values_supported": ["ES256"],
"claims_supported": [
"aud",
"exp",
"iat",
"iss",
"allow_list",
"cluster_id",
"client_id",
"sub"
],
"code_challenge_methods_supported": []
}
| 1 | Look for the jwks_uri.
It’s the URL we’re interested in. |
| 2 | Also note down the token_endpoint.
We’ll need it later. |
JWK Store
To verify that the Crossplane Service Broker will be able to access this URL, check the response now:
curl https://auth.corp.internal/jwks
This should return a JSON like the following:
The values for x and y have been shortened in the example below.
|
{
"keys": [
{
"kty": "EC",
"crv": "P-256",
"x": "6ze…",
"y": "O5K…"
}
]
}
Get a Bearer Token
In order to get a Bearer Token, you need to be in the possession of a client_id and a client_secret.
Create these on your authentication server or request them from authorized personnel.
Those should allow you to request a token from the authentication server on the /token endpoint:
|
The |
curl \
--silent --request POST \
--data "grant_type=client_credentials" \
--data "client_id=950aaaa5-a656-4a8c-8515-aa505a550a52" \
--data "client_secret=5a2924a5-050a-445a-aa5a-0a50a445a845" \
"https://auth.corp.internal/token"
This usually returns a JSON like this:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.zJrV44Lhr1Ck4vg1dMnldql0adLgut241jo0FbFXMlI", (1)
"token_type": "Bearer",
"expires_in": 600
}
| 1 | The value-part here is your actual Bearer Token.
The quotes (") are just JSON syntax and don’t belong to the token itself. |
| You can check the content of the token on jwt.io. |
|
Here’s a shortcut to grab the token directly:
On macOS, you can also copy the token directly to your clipboard like this:
|