---
schema_version: "1"
id: 1c6e6251b04c4588612d949460b49dfb7336bf15c937237a9b7b8372b0aeb94d
title: Configure Connected Apps with OAuth 2.0 Trust
collection: tableau
version: next
locale: en-us
portal_url: https://docs.salesforce.com/tableau/next/en-us/online/connected_apps_eas.md
canonical_url: https://help.tableau.com/v0.0/online/en-us/connected_apps_eas.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 9e507300b10abd579027b5052ac52af0ed2bd76c282349de44c28ce1477dae3d
description: Configure connected apps with OAuth 2.0 trust by registering an external authorization server.
---
[Skip to main content](#main-content)

# Configure Connected Apps with OAuth 2.0 Trust

As a Tableau Cloud site admin, you can register one or more external authorization servers (EASs) to establish a trust relationship between your Tableau Cloud site and the EAS using the OAuth 2.0 standard protocol.

**Important:**

- Some of the procedures in this topic require configuration with third party software and services. We’ve made a best effort to verify the procedures to enable the EAS feature on Tableau Cloud. However, third-party software and services might change or your organization might differ. If you encounter issues, refer to your third-party documentation for authoritative configuration details and support.
- In order for the session token to be valid, the clocks of the external application and the server that hosts the external application must be set to Coordinated Universal Time (UTC). If either clock uses a different standard, the connected app will not be trusted.

## How Tableau connected apps work with OAuth 2.0 trust

The trust relationship between your Tableau Cloud site and external application is established and verified through an authentication token in the JSON Web Token (JWT) standard.

When embedded Tableau content is loaded in your external application, Authorization Code Flow, OAuth flow is used. After users successfully sign in to the IdP, they are then automatically signed in to Tableau Cloud. Follow the steps described below to register your EAS with your Tableau Cloud site.

### Key components of a connected app

The following components of the connected work together with the JWT in your external application to authenticate users and display embedded content.

- **External authorization server (EAS):** The server, typically your IdP, that functions as the interface between the user and the external application. The server authenticates and authorizes user access to the protected Tableau content.
- **Issuer URL:** The URL that uniquely identifies the EAS instance.

### Connected app workflow

#### Embedding workflows

The diagram below illustrates how authentication works between your external authorization server (EAS), external application (web server and webpage), and Tableau connected app.

![](/tableau/next/en-us/online/en-us/Img/connectedapp_how_EAS.png)

1. **User visits the webpage:** When a user visits the embedded content on a webpage, the webpage sends a GET request to the external application.
2. **External application redirects request to EAS:** External application responds with a webpage that redirects to the external authorization server (EAS).
3. **User authenticates with EAS:** User authenticates and authorizes with the EAS.
4. **EAS responds to webpage with authorization code:** The EAS responds to the page with an authorization code and redirects back to the webpage.
5. **EAS converts authorization code to JWT:** Webpage calls the EAS to convert the authorization code to a JWT, which the webpage puts into the embedded content’s URL.
6. **Webpage requests content from Tableau:** Webpage loads the iFrame and sends a GET request to Tableau.
7. **Tableau validates the token:** Tableau validates the JWT in the URL with the signature and responds with the content and respects the embedding scopes defined in the JWT.

## Create a connected app

### Step 1: Before you begin

To register an EAS with your Tableau Cloud site, you must have an EAS already configured. In addition, the EAS must send a valid JSON Web Token (JWT) that contains the registered claims and header listed in the table below.

<table style="width: 90%;mc-table-style: url('Resources/TableStyles/Basic-Border-Light.css');margin-left: 0;margin-right: auto;" class="TableStyle-Basic-Border" cellspacing="0">
                    <colgroup><col class="TableStyle-Basic-Border-Column-Column1">
                    <col class="TableStyle-Basic-Border-Column-Column1">
                    <col class="TableStyle-Basic-Border-Column-Column1">
                    </colgroup><tbody>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Claim</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Name</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1" style="font-weight: bold;">Description or required value</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">"<code>kid</code>"</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Key ID</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Required (in header). A unique key identifier from the identity provider.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">"<code>iss</code>"</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Issuer</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Required (in header or as a claim). 
					Unique issuer URI, in HTTPS, that identifies the trusted connect app and its signing key.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">"<code>alg</code>"</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Algorithm</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Required (in header). JWT signing algorithm. Supported algorithm names are listed in the <a href="https://www.javadoc.io/doc/com.nimbusds/nimbus-jose-jwt/2.21/com/nimbusds/jose/JWSAlgorithm.html" target="_blank">Class JWSAlgorithm</a> page in the javadoc.io documentation. </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">"<code>sub</code>"</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Subject</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">User name (email address) of the authenticated <span class="mc-variable Variables.ProductName variable">Tableau Cloud</span> user.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">"<code>aud</code>"</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Audience</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">
                                <p>Value must be: "<code>tableau</code><code>:&lt;site_luid&gt;</code>"</p>
                                <div>
                                    <p>To obtain the  site LUID, you can use the Tableau REST API's <a href="https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref.htm#sign_in">Sign In</a> method or follow the steps below to copy the site ID. <b>Note:</b> You must register an EAS&nbsp;using the procedure described <a href="#step2">here</a> before you can copy the site ID.<br></p>
                                    <ol>
                                        <li value="1">Select <span class="uicontrol">Settings</span> &gt; <span class="uicontrol">Connected Apps</span> and then select the <span class="uicontrol">External Authorization Server</span> connected app.</li>
                                        <li value="2">
                                            <p>Click the <span class="uicontrol">Copy Site ID</span> button.</p>
                                            <p>
                                                <img src="https://help.tableau.com/v0.0/online/en-us/Img/connectedapp_eas_button_luid.png" alt="Details of the external authorization server, with a button to copy the site ID.">
                                            </p>
                                        </li>
                                    </ol>
                                </div>
                            </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">"<code>exp</code>"</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Expiration Time</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">
                                <p>
                                    A valid JWT must not be expired. The expiration time (in UTC) of the JWT must be within the maximum validity period, which is 10 minutes.
                                </p>
                            </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">"<code>jti</code>"</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT&nbsp;ID</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">The JWT&nbsp;ID&nbsp;claim provides a unique identifier for the JWT and is case sensitive.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">"<code>scp</code>"</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Scope</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">
                                <p>For <i>embedding workflows</i>, supported values include:

</p>
                                <p>"<code>tableau:views:embed</code>"<br>"<code>tableau:views:embed_authoring</code>" <br>"<code>tableau:metrics:embed</code>" (Retired in October 2023 (Tableau 2023.3))<br>"<code>tableau:ask_data:embed</code>"(Retired in February 2024 (Tableau 2024.1))

</p>
                                <p><b>Notes:</b>
                                </p>
                                <ul>
                                    <li>Values must be passed as a list type.
</li>
                                    <li>For <code>tableau:views:embed</code>, the scope respects users’ permissions already configured in <span class="mc-variable Variables.ProductName variable">Tableau Cloud</span> and allows users to interact with the tools in the embedded view if available in the original view.
</li>
                                    <li>We recommend the embed code exclude the toolbar parameter. For more information see <a href="#known_issues" class="xref">Known issues (embedding workflows only)</a> below.
</li>
                                </ul>
                                <p>For <i>REST&nbsp;API authorization workflows</i>, see <a href="https://help.tableau.com/v0.0/online/en-us/connected_apps_scopes.htm#scopes" class="xref">REST API methods that support JWT&nbsp;authorization</a>.</p>
                                <p>For <i>Metadata API workflows that use the REST API for authentication</i>, the only supported scope is <code>tableau:content:read</code>.</p>
                                <p>For <i>VizQL Data Service workflows that use the REST API for authentication</i>, the only supported scope is <code>tableau:viz_data_service:read</code>.</p>
                            </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><code>https://tableau.com/oda</code>
                            </td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">On-demand access - claim (enable capability)</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">For <i>embedding workflows</i> only.
                                <p>Value must be "<code>true</code>" and one or more Tableau Cloud groups must be specified (see next row). For more information, including prerequisites like the Embedding Analytics or Capacity-based Viewer Blocks license, see the <a href="https://help.tableau.com/current/api/embedding_api/en-us/docs/embedding_api_user_attributes.html#on-demand-access-for-users" target="_blank">Customize and Control Data Access</a> page in the Tableau Embedding API v3 Help.</p></td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1" rowspan="2"><code>https://tableau.com/groups</code>
                            </td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">On-demand access - claim (specify group name)</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">For <i>embedding workflows</i> only.
                                <p>Value must match the name of one or more groups in Tableau Cloud. For more information, including prerequisites like the Embedding Analytics or Capacity-based Viewer Blocks license, see the <a href="https://help.tableau.com/current/api/embedding_api/en-us/docs/embedding_api_user_attributes.html#on-demand-access-for-users" target="_blank">Customize and Control Data Access</a> page in the Tableau Embedding API v3 Help.</p></td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Dynamic group membership</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">For <i>embedding workflows</i> only.
                        <p>Value must match the name of one or more groups in Tableau Cloud. For more information, see <a href="https://help.tableau.com/v0.0/online/en-us/to_add_users_groups.htm#assertions" class="xref">Dynamic group membership using assertions</a>.</p></td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyB-Column1-Body1">(User attributes)</td>
                            <td class="TableStyle-Basic-Border-BodyB-Column1-Body1">(User attribute values)</td>
                            <td class="TableStyle-Basic-Border-BodyA-Column1-Body1">
                                <p>For <i>embedding workflows</i> only.
</p>
                                <p>
                                    You can include user attributes in the JWT. Then when user attribute functions are used in embedded content, Tableau checks the  authenticated user’s context and determines what data can display at runtime. </p>
                                <p><b>Notes:</b>
                                </p>
                                <ul>
                                    <li>
                                        <p>Check the <a href="https://help.tableau.com/current/api/embedding_api/en-us/docs/embedding_api_user_attributes.html#known-issues" target="_blank">Tableau Embedding API v3</a> Help for <i>known issues</i> and <i>limitations</i> that might affect your workflow.</p>
                                    </li>
                                    <li>For the user attribute to work, 1) you must enable the <span class="uicontrol">Control User Access in Authentication Workflows</span> setting and 2) the content author must create a <a href="https://help.tableau.com/current/pro/desktop/en-us/functions_functions_user.htm#user_attributes" target="_blank">user attribute function</a>.</li>
                                    <li>User attributes are case sensitive.
</li>
                                </ul>
                            </td>
                        </tr>
                    </tbody>
                </table>

**Note:** The JWT claims above are documented in the [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1) section in the documentation distributed by the Internet Engineering Task Force (IETF) organization.

### Step 2: Register your EAS with Tableau Cloud

By registering your EAS with Tableau Cloud, you establish a trust relationship between the EAS and your Tableau Cloud site. This means when users access Tableau content embedded in your external application, they are redirected to authenticate with the IdP. The EAS generates the authentication token, which is passed to Tableau Cloud for verification. After the trust relationship is verified, access to the embedded content is granted users.

**Note:** Some EAS support the option to display a consent dialog that asks for users’ approval for the application to access Tableau content. To ensure the best experience for your users, we recommend you configure your EAS to automatically consent to the external application’s request on users’ behalf.

1. As a site admin, sign in to Tableau Cloud.
2. From the left pane, select Settings > Connected Apps.
3. Click the New Connected App button drop-down arrow and select OAuth 2.0 Trust.
4. In the Create Connected App dialog box, do the following:  
    1. In the Name text box, enter a name for the connected app.
    2. In the Issuer URL text box, paste the issuer URL of the EAS.
    3. Select the Enable connected app. For security purposes, a connected app is set to disabled by default when created.
    4. When finished, click the Create button.
    ![A form to create a connected app, complete with fields for name, URLs, and a checkbox to enable the app.](/tableau/next/en-us/online/en-us/Img/connectedapp_create_eas.png)
5. After the connected app is created, copy the connected app’s site ID. The site ID is used for the JWT's "aud" (Audience) claim described in Step 1 above.
    
    ![Details of the external authorization server, with a button to copy the site ID.](/tableau/next/en-us/online/en-us/Img/connectedapp_eas_button_luid.png)

### Step 3: Next steps

#### For embedding workflows

After configuring your Tableau Cloud site to use your EAS, you must add embed code to your external application. Ensure that you include the valid JWT generated by your EAS, as described in Step 1, in the web component that your external application calls.

For more information about embedding Tableau content, see the following:

- Embed Tableau content using the [Tableau Embedding API v3](https://help.tableau.com/current/api/embedding_api/en-us/index.html).
- User attributes for attribute-based access control (ABAC), on-demand access, and dynamic group membership, see [Customize and Control Data Access](https://help.tableau.com/current/api/embedding_api/en-us/docs/embedding_api_user_attributes.html) in the Tableau Embedding API v3.
- Embed metrics, see [Embed Metrics into Webpages](https://help.tableau.com/current/pro/desktop/en-us/embed_metrics.htm) topic in the Tableau Help. (In October 2023 (Tableau 2023.3), Tableau retired the ability to embed metrics.)

**Note:** For users to successfully authenticate when they access embedded content, browsers must be configured to allow third-party cookies.

##### Control where content can be embedded using domain allowlist for embedding

Starting in June 2023 (Tableau 2023.2), you and your users can control whether Tableau content can be embedded without restriction or restricted to certain domains using the Update Embedding Settings for Site method in Tableau REST API.

By default, the `unrestrictedEmbedding` site setting for embedding is set to `true` to allow unrestricted embedding. Alternatively, you and your users can set the setting to `false` and specify the domains where Tableau content in external applications can be embedded using the `allowList` parameter.

For more information, see one or both of the following:

- [Update Embedding Settings for Site](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref_site.htm#update_embedding_settings_for_site) in the Tableau REST API Help
- [Tableau Site Setting for Embedding](https://help.tableau.com/current/api/embedding_api/en-us/docs/embedding_api_site.html#about-tableau-site-settings-for-embedding) in the Tableau Embedding API v3 Help.

#### For REST API authorization workflows

After the JWT has been configured, you must add the valid JWT to the REST API Sign In request for authorized access. For more information, see [Access Scopes for Connected Apps](https://help.tableau.com/v0.0/online/en-us/connected_apps_scopes.htm).

#### For Metadata API workflows

After the JWT has been configured, you must add the valid JWT to the REST API Sign In request. For more information, see [Access Scopes for Connected Apps](https://help.tableau.com/v0.0/online/en-us/connected_apps_scopes.htm).

#### For external tokens for SCIM workflows

After the JWT has been configured, you must have SAML authentication configured and the SCIM capability enabled. For more information, see [Configure Connected Apps with OAuth 2.0 Trust](#scim).

### Known issues (embedding workflows only)

There are a couple of known issues when using connected apps that will be addressed in a future release.

- **Toolbar features:** When embedded content has the toolbar parameter defined, not all toolbar features will work. To work around this issue, we recommend you hide the toolbar parameter like in the example below.
    
    <tableau-viz id='tab-viz' src='https://online.tableau.com/t/<your\_site>/...'
    	toolbar='hidden'>
    </tableau-viz>

- **Published data sources:** Published data sources set to Prompt User for database credentials will not display. To work around this issue, if possible, we recommend data source owners embed their database credentials instead.

### Troubleshoot

When embedded content fails to display in your external application or Tableau REST API authorization fails, you can use a browser’s developer tools to inspect and identify error codes that might be associated with the EAS feature enabled on your Tableau Cloud site.

Refer to the table below to review the description of the error code and potential resolution.

<table style="width: 90%;margin-left: 0;margin-right: auto;mc-table-style: url('Resources/TableStyles/Basic-Border-Light.css');" class="TableStyle-Basic-Border" cellspacing="0">
                    <colgroup><col class="TableStyle-Basic-Border-Column-Column1">
                    <col class="TableStyle-Basic-Border-Column-Column1">
                    <col class="TableStyle-Basic-Border-Column-Column1">
                    <col class="TableStyle-Basic-Border-Column-Column1">
                    </colgroup><tbody>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Error code</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Summary</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Description</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1" style="font-weight: bold;">Potential resolution or explanation</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">5</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">SYSTEM_USER_NOT_FOUND</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Tableau user could not be found</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">
                                To resolve this issue, verify the '<code>sub</code>' (Subject) claim value in the JWT is the user name (email address) of the authenticated Tableau Cloud user. This value is case sensitive.
                                <br>
                            </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">16</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">LOGIN_FAILED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Login failed</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">This error is typically caused by one of the following claim issues in the JWT:
                            <ul><li>The '<code>exp</code>' (Expiration Time) exceeds the default maximum validity period. To resolve this issue, review <a href="https://help.tableau.com/current/online/en-us/connected_apps_eas.htm#jwt" target="_blank">registered claims</a> required for a valid JWT and ensure the correct value does not exceed 10 minutes. </li><li>The '<code>sub</code>' (Subject) is calling an unknown user. To resolve this issue, verify the '<code>sub</code>' value is the user name (email address) of the authenticated Tableau Cloud user.</li></ul></td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">67</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">FEATURE_NOT_ENABLED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">On-demand access is not supported</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">On-demand access is available through licensed Tableau Cloud sites only. </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">142</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EXTERNAL_AUTHORIZATION_SERVER_NOT_FOUND</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EAS not found</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve this issue, verify the correct issuer is being called.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">143</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EXTERNAL_AUTHORIZATION_SERVER_LIMIT_EXCEEDED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EAS limit exceeded</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">The site has reached the maximum allowable number (1) of registered external authorization servers (EAS).</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">144</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">INVALID_ISSUER_URL</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Invalid issuer URL</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">The issuer URL is not valid or the '<code>iss</code>' (Issuer) attribute is missing from the JWT.
</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">149</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EAS_INVALID_JWKS_URI</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Missing JWKS URI </td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">JWKS URI does not exist in the IdP metadata or the JWKS URI is not configured in Tableau. To resolve this issue, configure a valid JWKS URI.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">150</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EAS_RETRIEVE_JWK_SOURCE_FAILED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Failure in retrieving keysource</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve this issue, verify the JWKS URI&nbsp;is configured correctly.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">151</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EAS_RETRIEVE_METADATA_FAILED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Failure in retrieving metadata from issuerUrl</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve this issue, verify the JWKS URI is configured correctly.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10081</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">COULD_NOT_RETRIEVE_IDP_METADATA</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Missing EAS&nbsp;metadata endpoint</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve this issue, verify the EAS&nbsp;is configured correctly and the correct issuer&nbsp;is being called.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10082</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">AUTHORIZATION_SERVER_ISSUER_NOT_SPECIFIED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Missing issuer</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve this issue, verify the correct issuer is being called. </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10083</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">BAD_JWT</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT header contains issues</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">The '<code>kid</code>' (Secret ID) or '<code>clientId</code>' (Issuer) claims are missing from the JWT header. To resolve this issue, ensure this information is included.
                        </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10084</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT_PARSE_ERROR</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT contains issues</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">
To resolve this issue, verify the following:
                        <ul><li>The '<code>aud</code>' (Audience) value referenced in the JWT uses the "tableau" value. This value is case sensitive.</li><li>The '<code>aud</code>' (Audience) and '<code>sub</code>' (Subject) are included in the JWT. </li></ul></td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10085</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">COULD_NOT_FETCH_JWT_KEYS</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT could not find keys</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Could not find the secret.
                        <p>To resolve this issue, verify the correct issuer is being called. </p></td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10087</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">BLOCKLISTED_JWS_ALGORITHM_USED_TO_SIGN</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Issue with the JWT&nbsp;signing algorithm</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve the issue, you can remove the signing algorithm. </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10088</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">RSA_KEY_SIZE_INVALID</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Issue with JWT signing requirements</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve this issue, verify with the EAS&nbsp;or IdP the JWT is being signed with an RSA key size of 2048. </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10091</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JTI_ALREADY_USED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Unique JWT&nbsp;required</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">The JWT&nbsp;has already been used in the authentication process. To resolve this issue, the EAS&nbsp;or IdP&nbsp;must generate a new JWT.
                    </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10092</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">NOT_IN_DOMAIN_ALLOW_LIST</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Domain of the embedded content is not specified</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve this issue, ensure the <code>unrestrictedEmbedding</code> setting is set to <code>true</code> or <code>domainAllowlist</code> parameter includes the domains where Tableau content is embedded using the <a href="https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref_site.htm#embedding_settings_for_site" target="_blank">Update Embedding Settings for Site</a> method in the Tableau REST API. </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10094</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">MISSING_REQUIRED_JTI</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Missing JWT&nbsp;ID</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">To resolve this issue, verify the  '<code>jti</code>' (JWT ID) is included in the JWT.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10095</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EXTERNAL_AUTHZ_SERVER_DISABLED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EAS disabled</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">The connected app for the EAS registered to the site is disabled.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10096</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT_EXPIRATION_EXCEEDS_CONFIGURED_EXPIRATION_PERIOD</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">&nbsp;</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">
                                The '<code>exp</code>' (Expiration Time) exceeds the default maximum validity period. To resolve this issue, review <a href="https://help.tableau.com/current/online/en-us/connected_apps_eas.htm#jwt" target="_blank">registered claims</a> required for a valid JWT and ensure the correct value does not exceed 10 minutes. </td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10097</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">SCOPES_MALFORMED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Issues with scopes claim</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">This error can occur when the '<code>scp</code>' (Scope) claim is either missing from the JWT&nbsp;or not passed as a list type. To resolve this issue, verify '<code>scp</code>' is included in the JWT and passed as a list type. For troubleshooting help with a JWT, see <a href="https://jwt.io/" target="_blank">Debugger</a> on the auth0 site.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10098</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT_UNSIGNED_OR_ENCRYPTED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT&nbsp;is unsigned or encrypted</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Tableau does not support an unsigned or encrypted JWT.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10099</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">SCOPES_MISSING_IN_JWT</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Missing scopes claim</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">The JWT&nbsp;is missing the required '<code>scp</code>' (Scope) claim. To resolve this issue, verify '<code>scp</code>' is included in the JWT. For troubleshooting help with a JWT, see <a href="https://jwt.io/" target="_blank">Debugger</a> on the auth0 site.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10100</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JTI_PERSISTENCE_FAILED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Unexpected JWT&nbsp;ID&nbsp;error</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">There was an unexpected error with the '<code>jti</code>' (JWT ID). To resolve this issue, a new JWT&nbsp;with a new '<code>jti</code>' must be generated.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10101</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EPHEMERAL_USER_LOGIN_FAILED_SITE_NOT_UBP_ENABLED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">On-demand access is not supported</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">The site is not licensed with the Embedded Analytics usage-based model that is required to enable on-demand access. For more information, see <a href="https://help.tableau.com/v0.0/online/en-us/license_product_keys.htm#embedded-analytics" class="xref">Understanding License Models</a>.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10102</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">EPHEMERAL_USER_NOT_SUPPORTED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">On-demand access is not supported when iframe-auth attribute is enabled</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">This error can occur when the iframe-auth attribute is enabled. To resolve this issue, verify that the Tableau Embedding API&nbsp;version 3.6 or later is being used.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10103</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT_MAX_SIZE_EXCEEDED</td>
                            <td class="TableStyle-Basic-Border-BodyE-Column1-Body1">JWT exceeds maximum size</td>
                            <td class="TableStyle-Basic-Border-BodyD-Column1-Body1">This error can occur when JWT size exceeds 8000 bytes. To resolve this issue, make sure that only the necessary claims are being passed to <span class="mc-variable Variables.ProductName variable">Tableau Cloud</span>.</td>
                        </tr>
                        <tr class="TableStyle-Basic-Border-Body-Body1">
                            <td class="TableStyle-Basic-Border-BodyB-Column1-Body1">10113</td>
                            <td class="TableStyle-Basic-Border-BodyB-Column1-Body1">EPHEMERAL_USER_LOGIN_FAILED_SITE_NOT_ENTITLED_FOR_ODA_ACCESS</td>
                            <td class="TableStyle-Basic-Border-BodyB-Column1-Body1">On-demand access is not supported</td>
                            <td class="TableStyle-Basic-Border-BodyA-Column1-Body1">This site is not licensed with Embedded Analytics usage-based model; or Capacity-based Viewer Blocks is not enabled with Cloud+ or Tableau+ edition, which is required for on-demand access. For more information, see <a href="https://help.tableau.com/v0.0/online/en-us/license_product_keys.htm#UsageBased" class="xref">Usage-based license model</a> or <a href="https://help.tableau.com/v0.0/online/en-us/license_product_keys.htm#capacity" class="xref">Capacity-based license model</a>. </td>
                        </tr>
                    </tbody>
                </table>