> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siderolabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure Workspace ONE Access for Omni

> Set up Workspace ONE Access as a SAML identity provider for Omni.

This guide walks through creating a Web App in Workspace ONE Access (WSOA) and configuring Omni to authenticate against it via SAML.

## Configure Workspace ONE Access

This section walks through creating and configuring the Web App inside WSOA.

### Step 1: Create a new Web App

Log in to the WSOA user interface and navigate to **Resources → Web Apps → New**.

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-web-apps-resources.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=196c3b2b0d95cdd54b20a580aac9fd75" alt="Workspace ONE Access Web Apps page" width="730" height="330" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-web-apps-resources.png" />

Enter the following values to identify the application, then click **Next**.

| Option      | Value       | Description                         |
| ----------- | ----------- | ----------------------------------- |
| Name        | Omni        | A descriptive name for the Web App  |
| Description | Sidero Omni | A description for the Web App       |
| Icon        | Image       | An icon to display on the dashboard |

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-definition.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=e6eb7fec393247a5ca50211830e59a20" alt="Web App definition settings" width="1026" height="844" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-definition.png" />

### Step 2: Configure Single Sign-On

On the **Single Sign-On** page, configure the authentication type and endpoint URLs. The SSO URL and Recipient URL both point to Omni's Assertion Consumer Service endpoint, and the Application ID points to its SAML metadata URL.

| Option              | Value                               | Description                                   |
| ------------------- | ----------------------------------- | --------------------------------------------- |
| Authentication Type | SAML 2.0                            | The authentication protocol to use            |
| Configuration       | Manual                              | Manually specify all fields                   |
| Single Sign-On URL  | `https://{omni-host}/saml/acs`      | Omni's Assertion Consumer Service URL         |
| Recipient URL       | `https://{omni-host}/saml/acs`      | Must match the Single Sign-On URL             |
| Application ID      | `https://{omni-host}/saml/metadata` | Omni's SAML metadata URL                      |
| Username format     | Unspecified                         | No specific username format required          |
| Username value      | `${user.userName}`                  | The username to include in the SAML assertion |
| Relay State URL     | Blank                               | Leave this empty                              |

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-single-sign-on-authentication-type-settings.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=ea38bb40590f5d879bde2137ea9b80b8" alt="Single Sign-On authentication type settings" width="1026" height="1493" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-single-sign-on-authentication-type-settings.png" />

### Step 3: Configure advanced signing properties

Still on the **Single Sign-On** page, scroll to the **Advanced Properties** section and set the following toggles. The key settings here are enabling assertion signing (required by Omni) while leaving response signing and assertion encryption off.

| Option                      | Value            | Description                                  |
| --------------------------- | ---------------- | -------------------------------------------- |
| Sign Response               | False            | Do not sign the full SAML response           |
| Sign Assertion              | True             | Sign the SAML assertion (required)           |
| Encrypt Assertion           | False            | Do not encrypt the assertion                 |
| Include Assertion Signature | False            | Do not embed the signature separately        |
| Device SSO Response         | False            | Disable Device SSO                           |
| Enable Force Authn Request  | False            | Do not force re-authentication               |
| Signature Algorithm         | SHA-256 with RSA | Algorithm used to sign the assertion         |
| Digest Algorithm            | SHA-256          | Algorithm used to compute the digest         |
| Assertion Lifetime          | 200              | How long (in seconds) the assertion is valid |

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-single-sign-on-relay-state-url.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=cdf2821c927c9407295fad6e560fe17c" alt="Advanced signing properties" width="1026" height="1493" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-single-sign-on-relay-state-url.png" />

### Step 4: Map custom attributes

At the bottom of the **Single Sign-On** page, add the following entries in the **Custom Attribute Mapping** section. These attributes allow Omni to identify users and apply group-based role assignments.

| Name      | Format      | Namespace | Value               | Description                  |
| --------- | ----------- | --------- | ------------------- | ---------------------------- |
| email     | Unspecified |           | `${user.email}`     | The user's email address     |
| firstName | Unspecified |           | `${user.firstName}` | The user's first name        |
| lastName  | Unspecified |           | `${user.lastName}`  | The user's last name         |
| groups    | Unspecified |           | `${groupNames}`     | The user's group memberships |

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-custom-attribute-mapping.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=7e1ac755ec2d29da6dd02e4c1da130ef" alt="Custom attribute mapping configuration" width="1032" height="344" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-custom-attribute-mapping.png" />

### Step 5: Select an access policy

Click **Next** and select the access policy required by your organization.

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-access-policies.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=ea41a181fe79a0ce21cff145b4e544dd" alt="Access policy selection" width="1044" height="329" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-access-policies.png" />

### Step 6: Assign users and groups

Click **Save & Assign** and configure who is permitted to log in to Omni.

* Select the permitted group from your Active Directory or LDAP server.
* Set **Deployment Type** to **Automatic**.

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-cancel-back-save.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=2ed21712e4f93a63b03e1f977cca5d87" alt="Save and assign screen" width="509" height="94" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-cancel-back-save.png" />

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-application-omni-updated.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=98f4306bb9309728ba02075a49fd1566" alt="Application assignment configuration" width="1427" height="526" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-application-omni-updated.png" />

### Step 7: Obtain the IdP metadata URL

Navigate to **Settings** and click **Copy URL** to copy the IdP metadata URL.

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-web-apps-new.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=7c26c97e31401b5437138146b0f38b05" alt="Settings page showing Copy URL link" width="919" height="197" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-web-apps-new.png" />

<Info>
  Copy this URL — you will pass it to Omni as the `--auth-saml-url` flag in the next step.
</Info>

<img src="https://mintcdn.com/siderolabs-fe86397c/hBSakfrRT2YOVUyl/omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-settings-download-saml-metadata.png?fit=max&auto=format&n=hBSakfrRT2YOVUyl&q=85&s=dbf25da8631f5e38179cb53fb054f2ee" alt="SAML metadata download settings" width="873" height="417" data-path="omni/security-and-authentication/using-saml-with-omni/images/configure-workspace-one-access-settings-download-saml-metadata.png" />

## Configure Omni to use Workspace ONE Access

Pass the following flags to the Omni container at startup to enable SAML authentication. Alternatively, you can set these values in the [Omni configuration file](../../reference/omni-configuration) instead of passing them as CLI flags.

| Flag                                             | Description                                                                                                            |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| `--auth-saml-enabled`                            | Enables SAML authentication                                                                                            |
| `--auth-saml-url`                                | The IdP metadata URL copied in Step 7                                                                                  |
| `--auth-saml-label-rules='{"groups": "groups"}'` | Extracts the `groups` attribute from the SAML assertion and maps it to the label `saml.omni.sidero.dev/groups/<value>` |

For example:

```bash theme={null}
--auth-saml-enabled=true
--auth-saml-url=https://{workspace-one-host}/SAAS/API/1.0/GET/metadata/idp.xml
--auth-saml-label-rules='{"groups": "groups"}'
```

Once Omni is running with these flags, refer to the [Auto-assign roles to SAML users](https://omni.siderolabs.com/docs/how-to-guides/how-to-auto-assign-roles-to-saml-users/) guide to automatically assign roles based on SAML group attributes.

When using groups, the label prefix is `saml.omni.sidero.dev/groups/` rather than a role name directly. For example:

```yaml theme={null}
metadata:
  namespace: default
  type: SAMLLabelRules.omni.sidero.dev
  id: assign-admin-to-platform-admins-label
spec:
  assignroleonregistration: Operator
  matchlabels:
    - saml.omni.sidero.dev/groups/omni-platform-administrators
```
