> For the complete documentation index, see [llms.txt](https://docs.collibra.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.collibra.com/data-quality-self-hosted/admin-configuration/admin-console/user-management/saml-security/configuring-saml-authentication.md).

# Configuring SAML authentication

You can integrate Data Quality & Observability (self-hosted) with an existing SAML solution and have your application act as a service provider. Once you set up the environment variables, you can access and configure SAML security settings as an administrator in the SAML Setup section of the Admin Console.

## 1. Set the SAML authentication properties

Before configuring SAML authentication, you must add the following required properties to your configuration.

{% tabs %}
{% tab title="Standalone" %}
{% stepper %}
{% step %}
Add the properties as environment variables to your owl-env.sh file.
{% endstep %}

{% step %}
Prefix all properties with the `export` statement.
{% endstep %}

{% step %}
Restart the DQ Web app.
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="Cloud Native" %}

1. Add the properties as environment variables to your DQ-web ConfigMap.
2. Recycle the pod.
   {% endtab %}
   {% endtabs %}

### Required properties

| Kubernetes ConfigMap Metadata Property | Helm Upgrade Command Argument                  | Configuration Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| -------------------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SAML\_ENABLED                          | `--set global.web.security.saml.enabled`       | <p>Whether Collibra DQ uses SAML.</p><p>If set to <code>false</code>, users sign in with a username and password.</p><p>If set to <code>true</code>, SAML handles the authentication request.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| SAML\_ENTITY\_ID                       | `--set global.web.security.saml.entityId`      | <p>The name of the application for the identity provider, for example <em>Collibra DQ</em>.</p><p>It is an immutable unique identifier of the service provider for the Identity Provider (IdP).</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| SAML\_ENTITY\_BASEURL                  | `--set global.web.security.saml.entityBaseUrl` | <p>The base URL that is provided in the service provider metadata. It is used to generate the ACS URL, which is the entity base URL with <code>/saml/SSO</code> appended to it. It must include a port number if one is configured on the IdP side.</p><p>Once you have enabled and configured SAML authentication, you can download the service provider metadata from <code>https\://\<your\_dq\_environment\_url>/saml/metadata/SSO</code>.</p><div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>The <code>/saml/SSO</code> endpoint is case-sensitive. When you configure the ACS URL or sign-on URL in your identity provider, use <code>/saml/SSO</code> with a capital <code>SSO</code>. Using <code>/saml/sso</code> causes authentication failures.If you use Data Quality & Observability (self-hosted) with a Java version older than 21, such as Java 11, download your service provider metadata from <code>https\://\<your\_dq\_environment\_url>/saml/metadata</code> instead.</p></div> |

{% hint style="danger" %}
If you have SAML configured in Collibra DQ, or if the app sits behind a load balancer, see the CORS\_ALLOWED\_ORIGINS property below.
{% endhint %}

### Optional properties: general

You can further configure your SAML setup with the following optional properties.

| Kubernetes ConfigMap Metadata Property                | Helm Upgrade Command Argument                              | Configuration Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ----------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CORS\_ALLOWED\_ORIGINS=${IDP-BASE-URL},${DQ-BASE-URL} | `--set global.web.security.cors.allowedOrigins`            | Allows cross-origin requests between Collibra DQ and SAML.Replace `${IDP-BASE-URL}` with the value of the actual IdP URL. For example, `https://ping.auth.com/`. Replace `${DQ-BASE-URL}` with the value of the actual DQ Base URL. For example, `https://dq-env.com`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| SAML\_LB\_EXISTS                                      | `--set global.web.security.saml.loadBalancerExist`         | <p>Whether the application needs to configure a load balancer.</p><p>You generally need this setting only when the Load Balancer is set for SSL Termination.</p><p>The default value is <code>false</code>.</p><p>If set to <code>true</code>, you must also provide a value for SAML\_LB\_SERVER\_NAME.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| SAML\_ROLES\_PROP\_NAME                               | `--set global.web.security.saml.rolePropName`              | <p>The attribute in which the identity provider stores the role of the user authenticating in the SAML response.</p><p>The default value is <code>memberOf</code>.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| SAML\_GRANT\_ALL\_PUBLIC                              | `--set global.web.security.saml.grantAllPublic`            | <p>Whether any user authenticated by the identity provider is allowed to login the Collibra DQ application.</p><p>The default value is <code>true</code>.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| SAML\_USER\_NAME\_PROP                                | `--set global.web.security.saml.userNamePropName`          | The name of the attribute in the SAML response that contains the username of the user who is authenticating.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| SAML\_TENANT\_PROP\_NAME                              | `--set global.web.security.saml.tenantPropName`            | <p>If using multi-tenant mode and <code>SAML\_TENANT\_PROP\_FROM\_URL</code> is set to <code>false</code>, this is the variable in which the identity provider stores the tenant name of the user authenticating in the SAML response.</p><p>The default value is <code>tenant</code>.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| SAML\_TENANT\_PROP\_FROM\_URL                         | `--set global.web.security.saml.tenantPropFromUrl`         | <p>If using multi-tenant mode, this property controls where the tenant is set to use for authentication.</p><p>Set to <code>true</code> to identify the tenant from the SAML <code>RelayState</code> parameter.</p><p>Set to <code>false</code> to identify the tenant using a SAML response attribute defined by the SAML\_TENANT\_PROP\_NAME property (default= <code>tenant</code>).</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| SAML\_KEYSTORE\_FILE                                  | `--set global.web.security.saml.keyStoreFile`              | <p>The path to the keystore file (p12 or jks format) for SAML SSO. The keystore manages the cryptographic keys and digital certificates used between the service provider (Data Quality & Observability (self-hosted)) and the IdP. For example: <code>file:///etc/ssl/server.p12</code></p><div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p>If an error occurs with the SAML\_KEYSTORE\_FILE value, ensure that you added <strong>file:</strong> to the file path in the owl\_env.sh file. For example: <code>SAML\_KEYSTORE\_FILE=file:/home/ec2-user/owl/config/collibraDQ-onelogin-keystore.p12</code></p></div>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| SAML\_KEYSTORE\_PASS                                  | `--set global.web.security.saml.keyStorePass`              | The password for the keystore provided in `SAML_KEYSTORE_FILE`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| SAML\_KEYSTORE\_ALIAS                                 | `--set global.web.security.saml.keyStoreAlias`             | The alias of the keypair (private and public) in the keystore used for SAML SSO.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| SAML\_METADATA\_URL                                   | `--set global.web.security.saml.metaDataUrl`               | The URL of the identity provider metadata XML file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| LOCAL\_REGISTRATION\_ENABLED                          | `--set global.web.security.localUserRegistration.enabled`  | <p>Allows you to display or hide the registration link for local users on the Collibra DQ sign-in page. Because the registration link is displayed on the sign-in page by default, this property is set to <code>true</code>.To display or hide the registration link from the owl-env.sh file, select from the following properties:</p><ul><li><strong>export LOCAL\_REGISTRATION\_ENABLED=true</strong>: Displays the registration link on the sign-in page for local users. This is set to <code>true</code> by default.</li><li><strong>export LOCAL\_REGISTRATION\_ENABLED=false</strong>: Hides the registration link on the sign-in page for local users.</li></ul><p>To display or hide the registration link from a K8s ConfigMap, select the from the following properties:</p><ul><li><strong>LOCAL\_REGISTRATION\_ENABLED:"true"</strong>: Displays the registration link on the sign-in page for local users. This is set to <code>true</code> by default.</li><li><strong>LOCAL\_REGISTRATION\_ENABLED:"false"</strong>: Hides the registration link on the sign-in page for local users.</li></ul><div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>This property must be set globally on deployment.</p></div> |
| CSRF\_TOKEN\_ENABLED                                  | `--set global.web.security.csrfToken.enabled`              | Enables the use of Spring CSRF token implementation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| CSRF\_TOKEN\_IGNORE\_URL\_PATTERN                     | `--set global.web.security.csrfToken.ignorePattern`        | Requests URL patterns to be ignored for CSRF token validation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| CSRF\_TOKEN\_IGNORE\_REFERER\_PATTERN                 | `--set global.web.security.csrfToken.ignoreRefererPattern` | Requests header referer patterns to be ignored for CSRF token validation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

{% hint style="info" %}
While CORS is still an optional configuration, it is required if you have SAML configured in Collibra DQ, or if you have Collibra DQ behind a load balancer.CORS is also enforced for multi-tenancy.
{% endhint %}

### Optional properties: load balancer

When `SAML_LB_EXISTS` is set to `true`, the following additional properties are available.

<table><thead><tr><th width="152">Kubernetes ConfigMap Metadata Property</th><th>Helm Upgrade Command Argument</th><th>Configuration Description</th></tr></thead><tbody><tr><td>SAML_LB_PORT</td><td><code>--set global.web.security.saml.loadBalancerPort</code></td><td><p>The port number of the load balancer.</p><p>The default value is <code>443</code>.</p></td></tr><tr><td>SAML_LB_SCHEME</td><td><code>--set global.web.security.saml.loadBalancerSchema</code></td><td><p>The protocol of the load balancer.</p><p>The default value is <code>https</code>.</p></td></tr><tr><td>SAML_LB_SERVER_NAME</td><td><code>--set global.web.security.saml.loadBalancerServerName</code></td><td><p>The server or DNS name.</p><p>Usually, the same as <code>SAML_ENTITY_BASEURL</code> without specifying the protocol, for example without <em>https://</em>.</p><p>This property is required and has no default.</p><div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>Don't include a trailing slash at the end of this value. A trailing slash can cause the base URL and port number to be parsed incorrectly, which results in authentication failures.</p></div></td></tr></tbody></table>

### Example

Executing the following Helm upgrade command:

```
helm upgrade --namespace <CDQ_NAMESPACE> \
--set global.web.security.saml.enabled=true \
--set global.web.security.saml.entityId=cdq-prod \
--set 'global.web.security.saml.entityBaseUrl=https://cdq-env.domain.com' \
--set 'global.web.security.saml.keyStoreFile=file:///etc/ssl/dqkeystore.jks' \
--set global.web.security.saml.keyStoreAlias=<ALIAS_NAME> \--set global.web.security.saml.keyStorePass=<KEYSTORE_PASS> \--set global.web.security.saml.tenantPropName=tenant \--set global.web.security.saml.rolePropName=memberOf \--set global.web.security.saml.grantAllPublic=true \--set global.web.security.saml.userNamePropName=userName \
<HELM_RELEASE_NAME> /path/to/helm/chart
```

Will result in the web ConfigMap being generated with these corresponding key-value pairs:

```
#enable SAML & show the SAML SSO option on the login page
SAML_ENABLED: 'true'

#set the EntityId of the application to be supplied to the IDP
SAML_ENTITY_ID: cdq-prodSAML_ENTITY_BASEURL: https://cdq-env.domain.com

#set SSL communication properties for SAML
SAML_KEYSTORE_FILE: file:///etc/ssl/dqkeystore.jksSAML_KEYSTORE_PASS: <ALIAS_NAME>SAML_KEYSTORE_ALIAS: <KEYSTORE_PASS>

#in multi-tenant mode set the name of the IDP variable to hold the tenant name
SAML_TENANT_PROP_NAME: tenant

#set the name of the IDP variable to hold the user roles in the responseSAML_ROLES_PROP_NAME: memberOf

#allow login if authenticated to the IDPSAML_GRANT_ALL_PUBLIC: 'true'

#optinally set a property that contains the username in the responseSAML_USER_NAME_PROP: userName
```

{% hint style="success" %}
We recommend synchronizing the clocks of the Identity Provider (IdP) and Service Provider (Collibra DQ) using Network Time Protocol (NTP) to prevent authentication failures caused by significant clock skew.
{% endhint %}

## 2. Enable and configure the SAML SSO option

### Set up SSL for SAML

SSL is required by SAML. If using a custom SAML keystore, follow the instructions provided in [Migrating to a custom SAML keystore](/data-quality-self-hosted/security-configuration/saml-authentication/migrating-to-a-custom-saml-keystore.md).

Otherwise, if using the built-in keystore, configure the following variable:

* Standalone: `SAML_KEYSTORE_PASS`
* Cloud native: `global.web.security.saml.keyStorePass`

{% hint style="info" %}
You can find more information on setting up SSL in the topic, [Setting up SSL (HTTPS)](/data-quality-self-hosted/security-configuration/setting-up-ssl-https.md). In addition, example helm commands are provided in the section "Install with SAML enabled" in [Deploy on self-hosted Kubernetes](/data-quality-self-hosted/installation/installing-data-quality-observability-self-hosted-on-self-hosted-kubernetes/deploy-on-self-hosted-kubernetes.md).
{% endhint %}

### Update settings in Admin Console

When you are ready with your IdP settings, add the final configuration settings in the Admin Console:

{% stepper %}
{% step %}
Sign in to Data Quality & Observability (self-hosted) as an administrator with a username and password to the tenant you want to configure.
{% endstep %}

{% step %}
Click **Admin Console**.
{% endstep %}

{% step %}
Click **User Management**, then click **SAML Security**.\ <i class="fa-chevrons-right">:chevrons-right:</i> The SAML Security Settings page opens.
{% endstep %}

{% step %}
Click the **SAML Enabled** dropdown menu, then select **Enabled**.
{% endstep %}

{% step %}
Under the SAML Enabled dropdown menu, to the far right side of the page, click <img src="https://4121921244-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWCrP7Albs8DfJjIQxUxw%2Fuploads%2Fgit-blob-5d5a447dce86ff44cb212f6fa822c736f80b3704%2FPlusIcon.svg?alt=media" alt="Plus icon" data-size="line">.\ <i class="fa-chevrons-right">:chevrons-right:</i> The Add Meta Data Configuration dialog box appears.
{% endstep %}

{% step %}
Enter the required information.

| Option          | Description                                                                                                                                                                                                                                                                                                                                                             |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Meta-Data URL   | <p>The URL of the identity provider metadata XML file or the location of the downloaded XML file.</p><div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>The name of the XML file must begin with the prefix <strong>file:</strong> and typically uses <strong>file:/opt/owl/config/idp-metadata.xml</strong> format.</p></div> |
| Meta-Data Label | The name for this specific configuration.                                                                                                                                                                                                                                                                                                                               |
| IDP URL         | The URL of the Collibra DQ application that is provisioned by the identity provider.                                                                                                                                                                                                                                                                                    |

{% hint style="info" %}
The IDP\_URL is the IdP Initiated SSO login URL. For Example, in Azure, it would be `https://myapps.microsoft.com/signin/<sp-app-id>?tenantId=<sp-tenant-id>`. In multi-tenant mode, this URL should contain a `RelayState` for DQ to set the tenant on completing the SSO.
{% endhint %}
{% endstep %}

{% step %}
Click **Add**.
{% endstep %}

{% step %}
Restart the application and sign in using the SAML SSO option.

{% hint style="info" %}
SAML SSO authentication via the /v3/auth/signin API is not supported.
{% endhint %}

{% hint style="info" %}
SAML authentication is only supported for IdP-initiated requests.
{% endhint %}
{% endstep %}

{% step %}
The user account has only public access. To map user roles from AD to DQ roles, follow the instructions provided in AD Group to Role Mapping.
{% endstep %}
{% endstepper %}
