Login with Keycloak
Configuring Flipt to enable login with Keycloak via OIDC
If you’ve read the Login With Google guide, you would have learned that Flipt supports many methods of authentication for users to control who has access to Flipt.
Keycloak is an open-source identity and access management solution that supports OpenID Connect (OIDC). This guide will serve as a walk-through on how to set up Keycloak for authentication of users of Flipt in your organization.
What You’ll Learn
In this guide, you will learn how to configure Keycloak as an OIDC provider for Flipt.
By the end of this guide, we will have:
- ⚙️ Setup Keycloak by creating a realm, user, and client
- 🔒 Configured Keycloak as an OIDC provider for Flipt
Prerequisites
For this guide you’re going to need the following:
- Docker
- Read the Login With Google guide
Setting Up Keycloak
To set up Keycloak for authentication, you will need to create a new realm, client, and user.
This section of the guide is a simplified version of the Keycloak: Getting Started Docker Guide.
Step 1: Start Keycloak
Start Keycloak using Docker:
Step 2: Access Keycloak
Access Keycloak at http://localhost:8080 and log in with the admin credentials (admin
/admin
).
Step 3: Create a Realm
Create a new realm called flipt
:
- Click on
Keycloak
in the top-left corner. - Click on the
Create realm
button. - Enter
flipt
as the realm name. - Click on the
Create
button.
Step 4: Create a User
Create a new user called user
:
- Click on the
Users
tab. - Click on the
Create new user
button. - Fill in the user details and click on the
Create
button. - Set the user’s password by clicking on the
Credentials
tab and clickSet Password
. - Enter a password and confirm the password.
- Toggle
Temporary
toOFF
so that the user does not need to change their password on the first login. - Click
Save
.
Step 5: Create a Client
Create a new client called flipt
:
- Click on the
Clients
tab. - Click on the
Create Client
button. - Ensure
OpenID Connect
is selected as the client type. - Enter
flipt
as the client ID and click onNext
. - Ensure the
Standard flow
andDirect access grants
are enabled and click onNext
. - Set the
Valid Redirect URIs
tohttp://localhost:8081/auth/v1/method/oidc/keycloak/callback
. - Set the
Web Origins
tohttp://localhost:8081
. - Ensure
Client authentication
is set toON
. - Click on
Save
.
Step 6: Copy Client ID and Secret
- From the
flipt
client, click on theCredentials
tab. - The client ID will be displayed at the top of the page (e.g.,
flipt
). Copy this value and save it for later. - Click on the copy icon next to the
Client Secret
field to copy the client secret. Save this value for later.
Step 7: Get Required URLs
- In another browser tab, paste the following URL into the address bar:
- Copy the
issuer
URL from the JSON response. This will be used as theissuer_url
in the Flipt configuration.
Running Flipt
Now that we have an OIDC client configured in our Keycloak instance, we can begin configuring Flipt to leverage it.
1. Define a Flipt config.yml
We’re going to create a configuration file named config.yml
in the current directory.
This file will tell Flipt to increase its logging level to the maximum to aid in debugging. We will also set the HTTP port to 8081
to avoid conflicts with Keycloak.
It will also set authentication as required = true
.
This is needed to ensure that Flipt enforces its APIs and must be provided with a credential of some sort to gain access.
2. Add keycloak
provider to config.yml
In your config.yml
file, add the following configuration in the authentication
section to enable the OIDC method and configure the Keycloak provider:
The session domain is required for session-compatible authentication methods. It’s used by Flipt as the domain for storing authentication cookies.
Note that we’ve enabled the oidc
method, and it has a section called providers
. Each key beneath the providers
section is unique and can be whatever you want. However, the name is important as it affects the redirect_url
generated for the particular provider.
Each provider section has a consistent structure. You’re required to provide the issuer_url
, client_id
, client_secret
and redirect_address
.
The scopes
section is optional, and allows Flipt the opportunity to obtain additional details on the authenticating caller (e.g. email and profile picture).
3. Start Flipt
You can now start your Flipt instance using the following command:
Once Flipt has started you can to navigate your browser to the UI and attempt a login with Keycloak.
When you click Login with Keycloak
you should be navigated away to your Keycloak instance to complete the authentication flow.
Once you successfully authenticate with the username/password you created earlier, you should return to Flipt and be logged in.
Conclusion
🎉 Congratulations, you’ve successfully run Flipt and enabled login with Keycloak as the OIDC provider.
Many of the same production considerations from the Login With Google guide apply here. You should follow the same steps to secure your Flipt instance and ensure that only authorized users can access it.
Next, you might want to consider enabling authorization and setting up policies to control who can access what in Flipt. You can learn more about this in the Role-Based Access Control with Keycloak guide.
Was this page helpful?