SAML with Keycloak
Keycloak is an open source platform that can be used as a user directory to save user data while acting as the IdP for single sign-on.
- Set up SAML in Keycloak (the identity provider).
- Set up SAML in Metabase (the service provider).
For more information, check out our guide for authenticating with SAML.
Working in the Keycloak console
- Go to the Keycloak admin console and sign in as an administrator.
- Create a user from Manage > Users. You’ll need to populate the fields with an email, first name, and last name.
- Once you’ve created at least one user, navigation tabs will appear at the top of the Users page. Go to Credentials to set password for your user.
- Turn off the Temporary toggle.
- Click Set Password to save your changes.
-
Create a new SSO client from Manage > Clients > Create
- Client ID: Enter
metabase
in lowercase. - Client type: Select
SAML
from the dropdown. - Click Next.
- Valid Redirect URIs: The URL where you are hosting your Metabase instance followed by a slash (/) and an asterisk (_). For example, if you are hosting Metabase locally at
http://localhost:3000
, the URL would behttp://localhost:3000/_
. - Home URL: In your Metabase, go to Admin settings > Authentication > SAML. You’ll find your Home URL in the field URL the IdP should redirect back to.
- Click Save.
- Client ID: Enter
-
(Optional) Disable key signing for SSO client. See settings for signing SSO requests.
- Click Keys tab.
- Client signature required: Off.
- Map user attributes from Metabase to SSO client.
- Click Client scopes tab.
- Click
metabase-dedicated
. - Click Add predefined mappers.
- Map attributes from users in Keycloak to Metabase.
- Configure the service provider (Metabase) from Configure > Realm Settings.
- From Endpoints, select “SAML 2.0 Identity Provider Metadata”.
- An XML file will open in a new tab.
- Keep this for reference, we will use it in the next section to configure Metabase.
Mapping fields from Keycloak to Metabase
- Go to your Metabase Admin settings > Authentication > SAML.
- From the XML file from Step 7 above:
- SAML Identity Provider URL: Insert the URL that appears right after the following string:
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location=
- SAML Identity Provider Issuer: Insert the URL that appears right after
entityID=
. - SAML Identity Provider Certificate: Input the long string that appears after the
<X509Certificate>
tag. Take care when inserting this string: if any letters or special characters are added or off, the setup won’t work. - SAML Application Name:
metabase
- SAML Identity Provider URL: Insert the URL that appears right after the following string:
- Click Save Changes.
- Check that SAML Authentication is toggled ON at the top of the page.
Mapping attributes from users in Keycloak to Metabase
Keycloak can import four user attributes by default: name, surname, email and role.
Let’s say we want email, name, and surname to be passed between the client (Metabase) and the authentication server (Keycloak).
- Select “X500 email”, “X500 givenName” and “X500 surname” from the checkboxes that are on the right side of the console.
- Click Add Selected.
- Click Edit beside each attribute and make the following changes:
- SAML Attribute Name: the name that Metabase expects to receive.
- SAML Attribute NameFormat: select “Basic” from the dropdown menu.
You can edit the attribute values from your Metabase Admin settings > Authentication > SAML > Attributes.
Troubleshooting SAML issues
For common issues, go to Troubleshooting SAML.
Read docs for other versions of Metabase.