Sso Saml Keycloak
import Inc0_sso_saml_ldapsync from './sso-saml-ldapsync.mdx'; import Inc1_sso_saml_faq from './sso-saml-faq.mdx';
The following process provides steps to configure SAML with Keycloak for Mattermost.
See the supported SAML encryption methods in the authentication configuration settings documentation.
Set up Keycloak for Mattermost SSO¶
This was tested with Keycloak v26.4.0. We recommend adding Mattermost as a client to your primary realm.
- Log in to Keycloak as an administrator.
- Select Clients, then Create client. You'll use this client ID in a later step.
- Client type:
SAML- Client ID:
mattermost
- Click Next and update the following values:
- Root URL:
http://your-mattermost-url.com- Home URL:
/login/sso/saml- Valid redirect URIs:
/login/sso/saml
- Save the client.
- Under the Settings tab, update the following values:
- Enabled: On
- Name ID format:
- Force Name ID format: On
- Under the Signature and Encryption section, update the following values:
- Sign Documents: Off
- Sign Assertions: On
- Signature Algorithm:
RSA_SHA256- SAML signature key name:
NONE- Canonicalization Method:
EXCLUSIVE- Encryption Algorithm:
AES_256_GCM- Key Transport Algorithm:
RSA_OAEP_MGF1P- Digest method for RSA-OAEP:
SHA1
Note
Earlier versions of this documentation recommended
RSA_SHA1. UseRSA_SHA256instead. NIST SP 800-131A set December 31, 2013 as the deadline after which SHA-1 is disallowed for digital signature generation. Revision 2 of that publication, published in March 2019, allows SHA-1 signature generation only where NIST protocol-specific guidance specifically permits it. A Keycloak server running in FIPS mode returns a500error when it tries to sign the assertion withRSA_SHA1. Mattermost validatesRSA_SHA256-signed assertions, and Keycloak derives the signature digest method from the signature algorithm you select here.
- Navigate to the Keys tab.
Client signature required: Off
Encrypt Assertions: On
Click Generate
- Download the private.key file.
- Click Confirm
Warning
Leave Client signature required off, as shown above. Mattermost does sign its authentication requests when you enable Sign Request in step 4 of the Mattermost section below, but Keycloak validates those signatures only if you also import the Mattermost service provider certificate as a signing key on this tab. Turning Client signature required on without importing that certificate causes Keycloak to reject Mattermost's authentication requests.
Note
If your Keycloak server runs in FIPS mode, the Archive Format list offers only
BCFKS, becausePKCS12andJKSare unavailable. Export theBCFKSkeystore, then convert it toPKCS12before you continue:keytool -importkeystore -srckeystore keystore.bcfks -srcstoretype BCFKS -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath /path/to/bc-fips-<version>.jar -destkeystore keystore.p12 -deststoretype PKCS12Point
-providerpathat your Bouncy Castle FIPS JAR.keytoolprompts for the source and destination store passwords. The convertedkeystore.p12then works with the extraction commands in step 4 of Configure SAML in Mattermost below.Convert the whole keystore as shown above rather than looking for a way to export the key on its own, because
keytoolhas no command that exports a private key by itself.As an alternative, generating the keypair locally and importing only the certificate into Keycloak avoids the keystore conversion entirely, and works on FIPS and non-FIPS servers alike:
openssl req -x509 -newkey rsa:2048 -nodes -days 1095 -subj "/CN=mattermost" -keyout mattermost.key -out mattermost.crtKeep
-nodes, because Mattermost can't read a passphrase-protected private key. Set-daysexplicitly, because it defaults to 30. Keep-keyoutand-out, because without them the certificate goes to standard output and the private key goes to a configuration-dependent default filename.Import only
mattermost.crtinto the encryption keys section of this tab, then upload both files in step 4 below and skip theopenssl pkcs12extraction commands, since you already have the files those commands would have produced.Next, click Export and update the following values and download the keystore.p12 file.
- Archive Format:
PKCS12- Key Alias:
mattermost- Key Password:
mattermost- Store Password:
mattermost
-
Navigate to the Client scopes tab.
First we add the predefined mappers for email, first name, and last name.
- Select mattermost-dedicated
- Click Add predefined mapper
- Select the X500 email, X500 givenName, and X500 surname attributes.
- Click Add.
Next, we add the mappers for username and id.
- Select Add Mapper -> By Configuration -> User Property.
- Set Name to
Username. - Set Property to
username(This is case sensitive and must be lowercase). - Set SAML Attribute Name to
username. - Select Save.

- Repeat the above steps and use the custom property of
idto create the ID Attribute.

If you're planning to sync your SAML users with LDAP within Mattermost, the ID value used here must match with your Mattermost LDAP ID Attribute.
Once done your Mappers should look like this:

-
Get the metadata URL from Keycloak:
- Within your Realm, select Realm Settings.
- At the bottom of the General tab you should see a SAML 2.0 Identity Provider Metadata endpoint. Right-click and copy this URL. Store for the next step.

Configure SAML in Mattermost¶
-
In the Mattermost System Console go to Authentication > SAML.
-
Set the Identity Provider Metadata URL to the value you copied from the step above and select Get SAML Metadata from IdP. The metadata import will populate fields related to your Keycloak configuration.
If you have any issues with this import, you can check the
mattermost.logfile for more information. Enable debug logging and try again.
- If Mattermost does not correctly pull the Identity Provider Public Certificate you can manually add it by opening the metadata URL in a browser, copying the certificate value, and use a tool like OneLogin's X.509 formatter that can format the certificate for you. Then save the correctly formatted certificate to a file and upload it to the Identity Provider Public Certificate field in the Mattermost System Console.
- If Mattermost can not pull the metadata and is throwing a connection issue enable debug logging and see if you need to add your Keycloak url to the Allowed Untrusted Internal Connections list in the System Console under Environment > Developer and restart the server. See the Allowed Untrusted Internal Connections documentation for details.
-
Set the below fields:
- Verify Signature: false
- Service Provider Login URL:
http://your-mattermost-url.com/login/sso/saml - Service Provider Identifier:
mattermost
The Service Provider Identifier will match the Client ID that you configured in the second Keycloak step.

-
Configure the Encryption using the key you downloaded in step 6 of the Keycloak config.
- Generate the
.crtfile from the.p12file.
openssl pkcs12 -password pass:mattermost -in keystore.p12 -out mattermost.crt -nodes -legacy- Generate the
.keyfile from the.p12file.
openssl pkcs12 -password pass:mattermost -in keystore.p12 -out mattermost.key -nodes -nocerts -legacy- Upload both of these files within the Mattermost System Console. Make sure to select Upload.
- Service Provider Private Key:
mattermost.key - Service Provider Private Certificate:
mattermost.crt - Sign Request: true
- Signature Algorithm:
RSAwithSHA256 - Canonicalization Algorithm:
Exclusive XML Canonicalization 1.0 (omits comments)

- Generate the
-
Set attributes for the SAML Assertions, which will update user information in Mattermost.
The attributes below are from steps 7 and 8 above. These values must be the SAML Attribute Name within Keycloak. See documentation on SAML configuration settings for more details.
- Email Attribute:
email - Username Attribute:
username - Id Attribute:
id

- Email Attribute:
-
Select Save.
To confirm SAML is working correctly, log out of Mattermost or open Mattermost in a new Incognito Browser Window and select Sign in with SAML on the login page and login with an existing Keycloak account.
If you have existing users in Mattermost that are going to be migrated to SAML login, make sure to plan for user migration and update your users accordingly.
You may also configure SAML for Keycloak by editing config.json. Before starting the Mattermost server, edit config.json to enable SAML based on SAML configuration settings. You must restart the Mattermost server for the changes to take effect.
Configuing a SAML user as a Guest in Keycloak¶
-
In Mattermost, go to System Console > Authentication > SAML.
-
Set the Guest Attribute to designate which SAML users are guests.

-
In the Keycloak administration interface, add a user attribute mapper for guests.
- Select Clients from the LHS menu.
- Select mattermost from the list.
- Select the Client Scopes tab
- Select mattermost dedicated from the list of scopes
- Click the Add mapper drop down and select By configuration
- Select User Attribute on the model that opens
- Add values for Name, User Attribute and SAML Attribute Name as shown
- In Keycloak specify which users are guest by adding the attribute under User details
- Select Users from the LHS menu.
- Select the username of the desired user.
- Select the Attribute tab and select + add an attribute.
- Add the key and value.






