Co-authored-by: Marty Hernandez Avedon <martyavedon@gmail.com>
8.5 KiB
title, description
| title | description |
|---|---|
| Configure Keycloak (SAML) | Create a Keycloak SAML client and configure Rancher to work with Keycloak. By the end your users will be able to sign into Rancher using their Keycloak logins |
Available as of v2.1.0
If your organization uses Keycloak Identity Provider (IdP) for user authentication, you can configure Rancher to allow your users to log in using their IdP credentials.
Prerequisites
-
You must have a Keycloak IdP Server configured.
-
In Keycloak, create a new SAML client, with the settings below. See the Keycloak documentation for help.
Setting Value Sign DocumentsON1Sign AssertionsON1All other ON/OFFSettingsOFFClient IDEither https://yourRancherHostURL/v1-saml/keycloak/saml/metadataor the value configured in theEntry ID Fieldof the Rancher Keycloak configuration2Client Name<CLIENT_NAME> (e.g. rancher)Client ProtocolSAMLValid Redirect URIhttps://yourRancherHostURL/v1-saml/keycloak/saml/acs><sup>1</sup>: Optionally, you can enable either one or both of these settings. ><sup>2</sup>: Rancher SAML metadata won't be generated until a SAML provider is configured and saved. -
In the new SAML client, create Mappers to expose the users fields
-
Export a
metadata.xmlfile from your Keycloak client: From theInstallationtab, choose theSAML Metadata IDPSSODescriptorformat option and download your file.Note
Keycloak versions 6.0.0 and up no longer provide the IDP metadata under the
Installationtab. You can still get the XML from the following url:https://{KEYCLOAK-URL}/auth/realms/{REALM-NAME}/protocol/saml/descriptorThe XML obtained from this URL contains
EntitiesDescriptoras the root element. Rancher expects the root element to beEntityDescriptorrather thanEntitiesDescriptor. So before passing this XML to Rancher, follow these steps to adjust it:- Copy all the attributes from
EntitiesDescriptorto theEntityDescriptorthat are not present. - Remove the
<EntitiesDescriptor>tag from the beginning. - Remove the
</EntitiesDescriptor>from the end of the xml.
You are left with something similar as the example below:
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" entityID="https://{KEYCLOAK-URL}/auth/realms/{REALM-NAME}"> .... </EntityDescriptor> - Copy all the attributes from
Configuring Keycloak in Rancher
-
From the Global view, select Security > Authentication from the main menu.
-
Select Keycloak.
-
Complete the Configure Keycloak Account form.
Field Description Display Name Field The attribute that contains the display name of users.
Example:givenNameUser Name Field The attribute that contains the user name/given name.
Example:emailUID Field An attribute that is unique to every user.
Example:emailGroups Field Make entries for managing group memberships.
Example:memberEntity ID Field The ID that needs to be configured as a client ID in the Keycloak client.
Default:https://yourRancherHostURL/v1-saml/keycloak/saml/metadataRancher API Host The URL for your Rancher Server. Private Key / Certificate A key/certificate pair to create a secure shell between Rancher and your IdP. IDP-metadata The metadata.xmlfile that you exported from your IdP server.Tip: You can generate a key/certificate pair using an openssl command. For example:
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout myservice.key -out myservice.cert -
After you complete the Configure Keycloak Account form, click Authenticate with Keycloak, which is at the bottom of the page.
Rancher redirects you to the IdP login page. Enter credentials that authenticate with Keycloak IdP to validate your Rancher Keycloak configuration.
Note: You may have to disable your popup blocker to see the IdP login page.
Result: Rancher is configured to work with Keycloak. Your users can now sign into Rancher using their Keycloak logins.
:::note SAML Provider Caveats:
- SAML Protocol does not support search or lookup for users or groups. Therefore, there is no validation on users or groups when adding them to Rancher.
- When adding users, the exact user IDs (i.e.
UID Field) must be entered correctly. As you type the user ID, there will be no search for other user IDs that may match. - When adding groups, you must select the group from the drop-down that is next to the text box. Rancher assumes that any input from the text box is a user.
- The group drop-down shows only the groups that you are a member of. You will not be able to add groups that you are not a member of.
:::
Annex: Troubleshooting
If you are experiencing issues while testing the connection to the Keycloak server, first double-check the configuration option of your SAML client. You may also inspect the Rancher logs to help pinpointing the problem cause. Debug logs may contain more detailed information about the error. Please refer to How can I enable debug logging in this documentation.
You are not redirected to Keycloak
When you click on Authenticate with Keycloak, your are not redirected to your IdP.
- Verify your Keycloak client configuration.
- Make sure
Force Post Bindingset toOFF.
Forbidden message displayed after IdP login
You are correctly redirected to your IdP login page and you are able to enter your credentials, however you get a Forbidden message afterwards.
- Check the Rancher debug log.
- If the log displays
ERROR: either the Response or Assertion must be signed, make sure eitherSign DocumentsorSign assertionsis set toONin your Keycloak client.
HTTP 502 when trying to access /v1-saml/keycloak/saml/metadata
This is usually due to the metadata not being created until a SAML provider is configured. Try configuring and saving keycloak as your SAML provider and then accessing the metadata.
Keycloak Error: "We're sorry, failed to process response"
- Check your Keycloak log.
- If the log displays
failed: org.keycloak.common.VerificationException: Client does not have a public key, setEncrypt AssertionstoOFFin your Keycloak client.
Keycloak Error: "We're sorry, invalid requester"
- Check your Keycloak log.
- If the log displays
request validation failed: org.keycloak.common.VerificationException: SigAlg was null, setClient Signature RequiredtoOFFin your Keycloak client.


