# General SAML2 Integration

The administrative workflow for setting up a SAML2 identity provider (IdP) consists of the following steps:

1. Enable SAML2 Providers at the desired entity level (Customer, Organization, or Account).
2. Create a SAML2 identity provider in Frame.
3. Enter the necessary configuration information for your new SAML2 identity provider in Frame.
4. Enter the configuration information in your actual SAML2 identity provider.
5. Verify that both sides of the IdP integration are properly configured by attempting to login using your identity provider.
6. Add SAML2 Permissions (authorization rules) at the Customer, Organization, or Account entity level to authorize users to specific roles.

Depending on the specific SAML2 identity provider, you may need to perform Step 4 before Step 3.

Frame supports both IdP-initiated and SP-initiated authentication workflows. In general, most customers implement SP-initiated authentication workflows by directing users to a Frame URL and letting Frame redirect the user to the SAML2 identity provider.

## Getting started

<p class="callout info"> Before a SAML2 identity provider can be added, the administrator must enable SAML2 Providers at a given level by navigating to the Admin Console. From there, navigate to the **Customer** or **Organization** page (depending on where you wish to add the IdP). Select **Users** from the left-hand menu.</p>

Unless there is a specific reason to do otherwise, adding the SAML2 Provider at the Customer or Organization level is best practice.

2. Enable the **SAML2** toggle under the Authentication tab and click **Save**.
    
    [![image.png](https://docs.difr.com/uploads/images/gallery/2025-10/scaled-1680-/h0timage.png)](https://docs.difr.com/uploads/images/gallery/2025-10/h0timage.png)
3. You'll see a new "SAML2 Providers" tab appear; click it and you'll see a **Add SAML2 provider** button.
    
    [![image.png](https://docs.difr.com/uploads/images/gallery/2025-10/scaled-1680-/qSTimage.png)](https://docs.difr.com/uploads/images/gallery/2025-10/qSTimage.png)

## Creating a SAML2 Provider

1. In the SAML2 Providers tab, click **Add SAML2 Provider** at the top right. A dialog to add a SAML2 provider will appear.
    
    [![image.png](https://docs.difr.com/uploads/images/gallery/2025-10/scaled-1680-/nePimage.png)](https://docs.difr.com/uploads/images/gallery/2025-10/nePimage.png)
    
    
    - **Application Id**: This field is sometimes referred to as Service Provider (SP) "Entity ID" or "Audience URI". It can technically be any text but is usually in the form of a URL and is often simply [https://use.difr.com](https://use.difr.com). For successful authentication, it is important that value entered in this field matches at least one of the values within "Audience Restriction" list that is part of the SAML2 assertion created by Identity Provider (IdP).
    - **Auth provider metadata**: Check the "URL" option and paste the Identity Provider metadata URL from your SAML2 IdP. The metadata URL must be publicly accessible to Frame Platform on the Internet.
    - **Custom Label**: When specified, this value will be used in the login page as `Sign in with <Custom Label>`.
    - **Authentication token** expiration: Set the desired expiration time for the authentication token. This can range from 5 minutes to 7 days. If the user is inactive for the configured amount of time, Nutanix Console will logout the user from Nutanix Console. If the user is active within the console (e.g., clicks on hyperlinks, moves the mouse/cursor, scrolls, or presses keys), the token will be renewed just before the user token expires. If the user is in a Frame session, the token is automatically renewed so the user is not disconnected while in session.
    - **Signed response**: Disable or enable based on your SAML2 identity provider.
    - **Signed assertion**: Disable or enable based on your SAML2 identity provider.  
          
          
        **<span class="TextRun SCXW207479778 BCX0" data-contrast="none" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun SCXW207479778 BCX0">Service Provider URLs</span></span><span class="EOP SCXW207479778 BCX0" data-ccp-props="{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335557856":16777215,"335559685":1440,"335559738":0,"335559739":0}"> </span>**
        
        <span class="TextRun SCXW207479778 BCX0" data-contrast="auto" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun SCXW207479778 BCX0">Upon creating a new Integration, your Service Provider is assigned two important URLs:</span></span><span class="EOP SCXW207479778 BCX0" data-ccp-props="{"134233117":false,"134233118":false,"335559738":240,"335559739":240}"> </span>
    - **<span class="TextRun SCXW207479778 BCX0" data-contrast="auto" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun SCXW207479778 BCX0">Assertion Consumer Service (ACS) URL</span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW207479778 BCX0">:</span></span>**<span class="TextRun SCXW207479778 BCX0" data-contrast="auto" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW207479778 BCX0">  The</span><span class="NormalTextRun SCXW207479778 BCX0"> endpoint where the Identity Provider (IdP) delivers SAML authentication responses after a successful login.</span></span><span class="EOP SCXW207479778 BCX0" data-ccp-props="{"134233117":false,"134233118":false,"335559738":240,"335559739":240}"> </span>
    - **<span class="TextRun SCXW207479778 BCX0" data-contrast="auto" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun SCXW207479778 BCX0">Metadata URL</span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW207479778 BCX0">:</span></span>**<span class="TextRun SCXW207479778 BCX0" data-contrast="auto" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW207479778 BCX0">  A</span><span class="NormalTextRun SCXW207479778 BCX0"> publicly accessible URL providing your Service Provider's SAML metadata, used by Identity Providers to configure and </span><span class="NormalTextRun SCXW207479778 BCX0">establish</span><span class="NormalTextRun SCXW207479778 BCX0"> trust.  
          
        </span></span>**<span class="EOP SCXW207479778 BCX0" data-ccp-props="{"134233117":false,"134233118":false,"335559738":240,"335559739":240}">Optional</span>**
    - <span class="NormalTextRun SCXW15592334 BCX0">Frame Login URL</span><span class="NormalTextRun SCXW15592334 BCX0">: </span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW15592334 BCX0">user</span><span class="NormalTextRun SCXW15592334 BCX0"> is directed to this URL when the user wants to log back into Frame after being logged out due to inactivity.  
          
        </span>
    - <span class="NormalTextRun SCXW15592334 BCX0"><span class="TextRun SCXW99947813 BCX0" data-contrast="none" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun SCXW99947813 BCX0">Frame Logout URL</span><span class="NormalTextRun SCXW99947813 BCX0">: </span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW99947813 BCX0">user</span><span class="NormalTextRun SCXW99947813 BCX0"> is directed to this URL when the user logs out of the Launchpad or if they decide to leave Frame after being logged out due to inactivity.</span></span><span class="EOP SCXW99947813 BCX0" data-ccp-props="{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335557856":16777215,"335559738":0,"335559739":0}"> </span></span>

<p class="callout info"><span class="TextRun SCXW229806544 BCX0" data-contrast="none" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun SCXW229806544 BCX0"> The SAML2 identity provider is typically configured to sign the SAML2 Authentication Response </span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW229806544 BCX0">message</span><span class="NormalTextRun SCXW229806544 BCX0"> or the SAML2 Assertion embedded within the Authentication Response message (and not both). The choice of what is signed by the SAML2 IdP must be the same choice in the Frame SAML2 IdP configuration. Otherwise, Frame will return </span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW229806544 BCX0">a</span><span class="NormalTextRun SCXW229806544 BCX0"> identity </span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW229806544 BCX0">provider</span><span class="NormalTextRun SCXW229806544 BCX0"> misconfiguration error when Frame processes the SAML2 Authentication Response from the SAML2 IdP.</span></span><span class="EOP SCXW229806544 BCX0" data-ccp-props="{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335557856":16711165,"335559738":0,"335559739":0}"> </span></p>

Click Add when ready to create the SAML2 Provider definition.

## Configure your SAML2 IdP

3. Each SAML2-compliant identity provider will have its own configuration requirements. However, there are some common configuration parameters used by SAML2 identity providers:
    
    
    - **Frame Metadata URL**: This URL is in the form:   
        [<span class="TextRun Underlined SCXW162496362 BCX0" data-contrast="none" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun SCXW162496362 BCX0" data-ccp-charstyle="Hyperlink">https://</span><span class="NormalTextRun SCXW162496362 BCX0" data-ccp-charstyle="Hyperlink">api.use.difr.com/iam/&lt;ID&gt;/metadata</span></span>](https://api.use.difr.com/iam/%3CID%3E/metadata).
    - **Single Sign-on URL** or **Assertion Consumer Service (ACS) URL:** This URL is in the form: [<span class="TextRun Underlined SCXW33980600 BCX0" data-contrast="none" lang="EN-US" xml:lang="EN-US"><span class="NormalTextRun SCXW33980600 BCX0" data-ccp-charstyle="Hyperlink">https://api.use.difr.com/iam/&lt;ID&gt;/login/done</span><span class="NormalTextRun SCXW33980600 BCX0" data-ccp-charstyle="Hyperlink">.</span></span>](https://api.use.difr.com/iam/%3CID%3E/login/done)  
         The SAML2 IdP will send the SAML2 Authentication Response to this URL.
    
    #### **Caution**
    
    <p class="callout warning"> Administrators choosing to cache or store the Frame public key certificates in their SAML2 IdP will need to update those public key certificates when Dizzion renews them.</p>
    
    **Note**
    
    <p class="callout info"> Frame does not support the SAML2 Single Logout Request.</p>

### Mandatory SAML2 Attributes

1. In order for Frame to display properly the user's first name, last name, and email address in the Dashboard and Launchpad, your SAML2 identity provider configuration must provide these four mandatory user attributes/values using the specified SAML2 attribute names, as described in the following table:
    
    <table><thead><tr><th>**User attribute**</th><th>**SAML2 attribute name**</th></tr></thead><tbody><tr><td>**First name**</td><td>**Use** `givenName`, `/urn:mace:dir:attribute-def:givenName/`, **or** `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname`   
      
    **SAML2 nameFormat:**  
    `urn:oasis:names:tc:SAML:2.0:attrname-format:basic`</td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Last name**</span></td><td><span style="color: rgb(0, 0, 0);">**Use** </span>`sn`, `/urn:mace:dir:attribute-def:sn/`, **or** `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname `   
      
    <span style="color: rgb(0, 0, 0);">**SAML2 nameFormat:**</span>  
    `urn:oasis:names:tc:SAML:2.0:attrname-format:basic`</td></tr><tr><td>**Email address**</td><td>**Use** `mail`, `/urn:mace:dir:attribute-def:mail/`, `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`, **or** `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`   
      
    **SAML2 nameFormat:**  
    `urn:oasis:names:tc:SAML:2.0:attrname-format:basic`</td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Name ID**</span></td><td>`NameID`   
      
    <span style="color: rgb(0, 0, 0);">**SAML2 nameFormat:**</span>  
    `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`</td></tr></tbody></table>

### Optional SAML2 Attributes

Customers can configure their SAML2 IdP to include additional SAML2 attributes in the SAML2 Authentication Response messages to Frame Console. These SAML2 attributes and their user-specific values can then be referenced when configuring Frame SAML2 Permissions to enforce role-based access control (RBAC).

The most common SAML2 attribute included by administrators in SAML2 Authentication Response messages would be a SAML2 attribute that is associated with a list of groups, such as a list of Active Directory groups, that the user is a member of. This allows the administrator to the SAML2 Permissions based on groups (and not individual user email addresses) and then associate the users to those groups in their IdP (or Active Directory, if their SAML2 IdP is connected to their Active Directory).

Frame also supports two Frame-specific SAML2 attributes to customize the logout/login workflow:

- **frame\_logout\_url**: user is directed to this URL when the user logs out of the Launchpad or if they decide to leave Frame after being logged out due to inactivity.
- **frame\_login\_url**: user is directed to this URL when the user wants to log back into Frame after being logged out due to inactivity.

When adding additional SAML2 attributes, make sure to record the optional attribute name(s) to be used (and possible values). For example:

- `groups`
- `Department`
- `http://schemas.xmlsoap.org/claims/Group`
- `http://schemas.microsoft.com/ws/2008/06/identity/claims/groups`

as the exact attribute name must be referenced in the condition section with the appropriate values of a SAML2 Permissions authorization rule.

### Configuring SAML2 Permissions

Once the SAML2 Provider is successfully configured in the Nutanix Console, administrators will need to add authorization rules from the SAML2 Permissions tab listed to the right of the SAML2 Provider tab.  
  
Add roles/permissions for your users by following our [Roles](https://docs.difr.com/books/platform-administrators-guide/page/authorization) and [User Permissions with a SAML2 IdP](https://docs.difr.com/books/platform-administrators-guide/page/authorization) guides.

[![image.png](https://docs.difr.com/uploads/images/gallery/2025-10/scaled-1680-/33Mimage.png)](https://docs.difr.com/uploads/images/gallery/2025-10/33Mimage.png)

The Group claim, created in the prior section, must be referenced as `http://schemas.xmlsoap.org/claims/Group` when creating the SAML2 Permission authorization rule.

SAML2 Configuration Lock

Customer Administrators have the option to lock SAML2 IdP configurations at the Customer level of the Frame tenant. When the toggle pictured below is enabled, SAML2 IdP integrations cannot be added from the Organization or Account levels of the Frame tenant.

![Configuration Lock](https://docs.difr.com/uploads/images/gallery/2025-10/saml-lock.png)

## Signing into Frame with your SAML integration

Your SAML integration will now appear to your users as a sign in button on your specific [Frame Sign in Page](https://docs.difr.com/books/platform-administrators-guide/page/authentication#entity-endpoint-urlsentity-endpoint-urls).