6.4 KiB
id, title, sidebar_position, tags
| id | title | sidebar_position | tags | |||||
|---|---|---|---|---|---|---|---|---|
| using-netbird-with-keycloak | Using NetBird with Keycloak | 3 |
|
This guide is a part of the NetBird Self-hosting Guide and explains how to integrate self-hosted NetBird with Keycloak.
Keycloak is an open source software product to allow single sign-on with Identity and Access Management aimed at modern applications and services.
:::tip managed idp If you prefer not to self-host an Identity and Access Management solution, then you could use a managed alternative like Auth0. :::
The following guide is an adapted version of the original Keycloak on Docker guide from the official website.
Step 1: Check your Keycloak Instance
For this guide, you need a fully configured Keycloak instance running with SSL.
We assume that your Keycloak instance is available at https://YOUR-KEYCLOAK-HOST:443. Feel free to change the port if you have configured Keycloak with a different one.
Most of the OIDC software requires SSL for production use. We encourage you to comply with this requirement to make the world more secure 😊.
Step 2: Create a realm
To create a realm you need to:
- Open the Keycloak Admin Console
- Hover the mouse over the dropdown in the top-left corner where it says
Master, then click onCreate Realm - Fill in the form with the following values:
- Realm name:
netbird
- Realm name:
- Click
Create - Your newly created realm
https://YOUR-KEYCLOAK-HOST:443/realms/netbirdwill be used later to setNETBIRD_AUTH_AUTHORITYin thesetup.envfile.
Step 3: Create a user
In this step we will create a NetBird administrator user.
- Open the Keycloak Admin Console
- Make sure, that the selected realm is
Netbird - Click
Users(left-hand menu) - Click
Create new user - Fill in the form with the following values:
- Username:
netbird
- Username:
- Click
Create
The user will need an initial password set to be able to log in. To do this:
- Click
Credentialstab - Click
Set passwordbutton - Fill in the password form with a password
- Set the
Temporaryfield toOffto prevent having to update password on first login - Click
Save
Step 4: Create a NetBird client
In this step we will create NetBird application client and register with the Keycloak instance.
- Open the Keycloak Admin Console
- Make sure, that the selected realm is
Netbird - Click
Clients - Click
Create clientbutton - Fill in the form with the following values and click Next:
- Client Type:
OpenID Connect - Client ID:
netbird-client
- Client Type:
- Your newly client
netbird-clientwill be used later to setNETBIRD_AUTH_CLIENT_IDin thesetup.env
- Check the checkboxes as on the screenshot below and click Save
Step 5: Adjust NetBird client access settings
In this step we will configure NetBird application client access with the NetBird URLs.
- Open the Keycloak Admin Console
- Make sure, that the selected realm is
Netbird - Click
Clients - Choose
netbird-clientfrom the list - Go to
Access Settingssection - Fill in the fields with the following values:
- Root URL:
https://YOUR DOMAIN/(this is the NetBird Dashboard root URL) - Valid redirect URIs:
https://YOUR DOMAIN/* - Valid post logout redirect URIs:
https://YOUR DOMAIN/* - Web origins:
+ - Click
Save
- Root URL:
Step 6: Create a NetBird client scope
In this step, we will create and configure the NetBird client audience for Keycloak to add it to the generated JWT tokens.
- Open the Keycloak Admin Console
- Make sure, that the selected realm is
Netbird - Click
Client scopes(left-hand menu) - Click
Create client scopebutton - Fill in the form with the following values:
- Name:
api - Type:
Default - Protocol:
OpenID Connect
- Name:
- Click
Save
- While in the newly created Client Scope, switch to the
Mapperstab - Click
Configure a new mapper - Choose the
Audiencemapping
- Fill in the form with the following values:
- Name:
Audience for NetBird Management API - Included Client Audience:
netbird-client - Add to access token:
On - Click
Save
- Name:
Step 7: Add client scope to NetBird client
- Open the Keycloak Admin Console
- Make sure, that the selected realm is
Netbird - Click
Clients - Choose
netbird-clientfrom the list - Switch to
Client scopestab - Click
Add client scopebutton - Choose
api - CLick
AddchoosingDefault - The value
netbird-clientwill be used as audience
Step 8: Continue with the self-hosting guide
Your authority configuration will be available under:
https://YOUR-KEYCLOAK-HOST:443/realms/netbird/.well-known/openid-configuration
-
Set properties in the
setup.envfile:- NETBIRD_AUTH_AUTHORITY=
https://YOUR-KEYCLOAK-HOST-AND-PORT/realms/netbird. This is theissuerfield of the openid-configuration. - NETBIRD_AUTH_CLIENT_ID=
netbird-client - NETBIRD_AUTH_AUDIENCE=
netbird-client - NETBIRD_AUTH_SUPPORTED_SCOPES=
openid profile email offline_access api. Use the fields specified in thescopes_supportedfield of the openid-configuration. - NETBIRD_AUTH_JWT_CERTS=
https://YOUR-KEYCLOAK-HOST-AND-PORT/realms/netbird/protocol/openid-connect/certs. Usejwks_urifrom the openid-configuration to setNETBIRD_AUTH_JWT_CERTS
- NETBIRD_AUTH_AUTHORITY=
-
You can now continue with the NetBird Self-hosting Guide.
:::note
Make sure that your Keycloak instance and NETBIRD_AUTH_AUTHORITY use HTTPS. Otherwise, the setup won't work.
:::









