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

# SAML SSO

Streamline member management for your organization by integrating your third-party identity provider with VESSL through SAML Single Sign-On (SSO).

## Prerequisites

VESSL supports integration with any identity provider that complies with the SAML 2.0 protocol. Below are some commonly used providers:

* [Microsoft Entra](https://www.microsoft.com/en-us/security/business/microsoft-entra) (formerly Azure Active Directory)
* [AWS IAM Identity Center](https://aws.amazon.com/iam/identity-center/)
* [Okta](https://okta.com)

### Important Notes:

* VESSL's Assertion Consumer Service (ACS) only supports HTTP-POST bindings.
* The following SAML features are not supported by VESSL:
  * Identity Provider (IdP)-initiated SSO
  * Identity Provider (IdP)-initiated Single Logout (SLO)

## VESSL Endpoints

<Tip>You can also find this information on the SAML SSO Settings page.</Tip>

For each organization, VESSL is using the following format for SAML service provider configuration.
Be sure to replace `{your-org-name}` with your organization's name in the following URLs:

* SAML Entity ID (Metadata URL): `https://app.vessl.ai/{your-org-name}/saml/metadata`
* Assertion Consumer Service (ACS) URL: `https://app.vessl.ai/{your-org-name}/saml/acs`

The metadata URL itself serves raw metadata XML, which may be required for certain identity providers during configuration.

## Configuring Identity Provider

Choose the appropriate setup instructions based on your identity provider.

<Tabs>
  <Tab title="Microsoft Entra">
    <Steps>
      <Step title="Sign in to Microsoft Entra">
        Sign in to the [Microsoft Entra admin center](https://entra.microsoft.com).
      </Step>

      <Step title="Create VESSL Application">
        Navigate to **Enterprise applications** using the search bar.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/entra_0.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=884ce516770b3be5c783f8a90d129f57" width="709" height="281" data-path="images/organization/saml-sso/entra_0.png" />

        Click **+ New Application**, then select **+ Create your own application**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/entra_2.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=9e61146f5f0e1298b31aa0ebc20085f9" width="612" height="256" data-path="images/organization/saml-sso/entra_2.png" />

        Enter `VESSL AI` as the application name and ensure you select **Non-gallery** application. Click **Create**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/entra_1.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=9bc2fe807e93efc7034d05c7e85d0593" width="576" height="499" data-path="images/organization/saml-sso/entra_1.png" />
      </Step>

      <Step title="Add Users">
        After creating the application, you'll be directed to the **Overview** page.

        Click on **1. Assign users and groups**, then select **+ Add user**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/entra_3.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=db369b36654814a6bbbbf463858e1fb6" width="780" height="412" data-path="images/organization/saml-sso/entra_3.png" />

        Add users who will use VESSL, then click **Assign**.
      </Step>

      <Step title="Setup SAML SSO">
        Return to the **Overview** page and click **2. Set up single sign-on**. Select **SAML** as the sign-on method.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/entra_4.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=11ff5a3ac0d127c8545437c7593f8054" width="751" height="448" data-path="images/organization/saml-sso/entra_4.png" />

        In **Basic SAML Configuration** (Section 1), add the **Identifier** and **Reply URL** using the information from [VESSL Endpoints](#vessl-endpoints), then click **Save**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/entra_5.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=560c56120a4bfbf5b78cc8dac2de95e3" width="775" height="510" data-path="images/organization/saml-sso/entra_5.png" />
      </Step>

      <Step title="Copy Metadata URL">
        Copy the **App Federation Metadata URL** from Section 3. This will be needed in the next step.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/entra_6.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=e1c2997e52f8e2a5fbdcbca7f02367bf" width="764" height="273" data-path="images/organization/saml-sso/entra_6.png" />
      </Step>
    </Steps>
  </Tab>

  <Tab title="AWS IAM Identity Center">
    <Steps>
      <Step title="Open Applications">
        In the AWS console, go to **IAM Identity Center** → **Applications**, then click **Add application**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp1.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=15e77c824d3d08f75319e670b5f9a73c" width="1517" height="484" data-path="images/organization/saml-sso/idp1.png" />
      </Step>

      <Step title="Choose application type">
        Select **I have an application I want to set up**, then choose **SAML 2.0**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp2.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=807104e905e07f46e9c5fd90cc1519da" width="1517" height="1065" data-path="images/organization/saml-sso/idp2.png" />
      </Step>

      <Step title="Configure application">
        On the configuration page, set a recognizable **Display name** (for example, "VESSL AI"). **Download** the **IAM Identity Center SAML metadata file** (this will be used in VESSL later). In **Application metadata**, choose **Manually type your metadata values** and fill the fields using [VESSL Endpoints](#vessl-endpoints):

        **Application ACS URL**: `https://app.vessl.ai/{your-org-name}/saml/acs`\
        **Application SAML audience**: `https://app.vessl.ai/{your-org-name}/saml/metadata`

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp3.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=49626584f74ea74fac34f558d5729eda" width="1517" height="966" data-path="images/organization/saml-sso/idp3.png" />

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp4.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=34cd2f8d01dbc2af446966627a296fb4" width="1193" height="313" data-path="images/organization/saml-sso/idp4.png" />

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp5.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=38d613af12245b4cdc622ecc8c787bf3" width="952" height="422" data-path="images/organization/saml-sso/idp5.png" />
      </Step>

      <Tip>
        Use the following attribute names in VESSL SAML SSO Settings after finishing the IdP setup:
        IDP User ID Attribute: <code>username</code><br />
        IDP User Email Attribute: <code>email</code>
      </Tip>

      <Step title="Edit attribute mappings">
        From the application detail page, go to **Actions** → **Edit attribute mappings**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp6.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=12fb3bbb3c20abbc6cd580f3923c576c" width="981" height="455" data-path="images/organization/saml-sso/idp6.png" />
      </Step>

      <Step title="Configure attribute mappings">
        Enter the mappings as follows:

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp7.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=dd402aa237fc905b616a37cc890f5796" width="1004" height="455" data-path="images/organization/saml-sso/idp7.png" />

        | User attribute | Maps to this string value | Format    |
        | -------------- | ------------------------- | --------- |
        | Subject        | `${user:email}`           | transient |
        | `email`        | `${user:email}`           | basic     |
        | `username`     | `${user:email}`           | basic     |
      </Step>
    </Steps>
  </Tab>

  <Tab title="Okta">
    <Steps>
      <Step title="Sign in to Okta">
        Log in to your Okta organization with an administrator account.
      </Step>

      <Step title="Create VESSL Application">
        In the admin console, go to **Applications** > **Applications**, then click **Create App Integration**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/okta_1.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=6af0d3c16c52e379450e2875a659ed98" width="746" height="306" data-path="images/organization/saml-sso/okta_1.png" />

        Choose **SAML 2.0** as the sign-on method, then click **Next**.

        Enter `VESSL AI` as the app name, then click **Next**.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/okta_2.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=e3546d80454b9699963471f50a03cedd" width="783" height="559" data-path="images/organization/saml-sso/okta_2.png" />
      </Step>

      <Step title="Setup SAML SSO">
        Use the information from [VESSL Endpoints](#vessl-endpoints) to fill in the required fields.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/okta_3.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=54b460a24fb276785171f091da3082e5" width="745" height="273" data-path="images/organization/saml-sso/okta_3.png" />

        Under **Attribute Statements**, configure the following attributes:

        | Name         | Name format   | Value        |
        | ------------ | ------------- | ------------ |
        | `user.email` | `Unspecified` | `user.email` |
        | `user.login` | `Unspecified` | `user.login` |

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/okta_4.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=ede7ddc4aa413bfe4fbd8a8c097d15fd" width="740" height="341" data-path="images/organization/saml-sso/okta_4.png" />

        Click **Next**, then click **Finish** to create the application.
      </Step>

      <Step title="Add Users">
        On the app settings page, go to **Assignments**.

        Select **Assign** > **Assign to People** to add users for VESSL.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/okta_5.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=d3c1410b416ede6b08197730a2933e4f" width="833" height="357" data-path="images/organization/saml-sso/okta_5.png" />
      </Step>

      <Step title="Copy Metadata URL">
        Navigate to the **Sign On** tab. In the **SAML 2.0** section, copy the **Metadata URL**. This will be used in the next step.

        <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/okta_6.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=2fe53ae594bd0da89e5e598679a3eead" width="703" height="515" data-path="images/organization/saml-sso/okta_6.png" />
      </Step>
    </Steps>
  </Tab>

  <Tab title="Custom Identity Provider">
    <Steps>
      <Step title="Provide Required Information">
        Access your identity provider’s admin console and input the necessary information from the [VESSL Endpoints](#vessl-endpoints) section.
      </Step>

      <Step title="Copy Metadata URL or XML">
        After completing the setup, copy the metadata URL or XML provided by your identity provider. This will be used in the next step.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Configuring VESSL

After completing the setup of your identity provider, use the interactive demo below to configure VESSL's SAML SSO settings.

<div style={{ marginBottom: '170px', position: 'relative', paddingTop: '300px' }}>
  <iframe src="https://demo.arcade.software/zaKgR4p3J7Pt9CbZ68uO?embed&embed_mobile=inline&embed_desktop=inline&show_copy_link=true" title="SAML SSO Settings" frameborder="0" loading="lazy" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="clipboard-write" style={{ position: 'absolute', top: '0px', left: '0px', width: '100%', height: '450px', colorScheme: 'light' }} />
</div>

<Steps>
  <Step title="Open SAML SSO Settings">
    Open your organization **Settings** → **SAML SSO**.
  </Step>

  <Step title="Add SAML SSO">
    Click **Add SAML SSO**.

    <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp8.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=57f056ccc86eed917f059e302ad61e9d" width="1018" height="638" data-path="images/organization/saml-sso/idp8.png" />
  </Step>

  <Step title="Fill in the details">
    Use the following values in the form:

    | Field                    | Value                                                              |
    | ------------------------ | ------------------------------------------------------------------ |
    | Metadata XML             | Paste contents of the downloaded IAM Identity Center metadata file |
    | IdP User ID Attribute    | `username`                                                         |
    | IdP User Email Attribute | `email`                                                            |

    <img style={{ borderRadius: '0.5rem' }} src="https://mintcdn.com/vesslai/jOLsLIzbNfRBXuYh/images/organization/saml-sso/idp9.png?fit=max&auto=format&n=jOLsLIzbNfRBXuYh&q=85&s=8af4daa917a55fe22bf7bfaab911a092" width="1116" height="934" data-path="images/organization/saml-sso/idp9.png" />
  </Step>
</Steps>

### IdP Attributes

Identity providers (IdPs) use attributes to supply user ID and email information. VESSL requires these attributes to retrieve the corresponding user data during authentication. Ensure you configure the correct attribute names based on your identity provider.

Refer to the details below to fill in the required fields:

<Tabs>
  <Tab title="Microsoft Entra">
    Use the following attribute names for Microsoft Entra:

    * **IDP User ID Attribute**:
      `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`
    * **IDP User Email Attribute**:
      `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
  </Tab>

  <Tab title="AWS IAM Identity Center">
    Use the following attribute names for AWS IAM Identity Center:

    * **IDP User ID Attribute**:
      `username`
    * **IDP User Email Attribute**:
      `email`
  </Tab>

  <Tab title="Okta">
    The attributes below assume you followed the Okta setup guide in this documentation. If you use a custom configuration, adapt the values accordingly:

    * **IDP User ID Attribute**:
      `user.login`
    * **IDP User Email Attribute**:
      `user.email`
  </Tab>

  <Tab title="Custom Identity Provider">
    For custom identity providers, refer to their documentation to identify the correct attribute names for user ID and user email. If needed, consult your administrator to ensure proper configuration.
  </Tab>
</Tabs>
