针对 OpenID Connect 配置 Tableau Cloud 或 TCM

本主题描述如何将 Tableau Cloud 或 Tableau Cloud Manager (TCM) 配置为使用 OpenID Connect (OIDC) 进行单点登录 (SSO)。这是由多个步骤组成的过程中的一步。以下主题提供有关配置以及将 OIDC 与 Tableau Cloud 或 TCM.一起使用的信息。

  1. OpenID Connect 概述

  2. 针对 OpenID Connect 配置身份提供程序

  3. 针对 OpenID Connect 配置 Tableau Cloud 或 TCM(此部分)

注意:

要求

参数

  • 客户端 ID:此值由 IdP 颁发,并指定已注册 Tableau Cloud 或 TCM 的标识符。这使得 IdP 能够知道身份验证请求来自哪里。

  • 客户端密文:这是 Tableau Cloud 或 TCM 用于验证来自 IdP 的响应的真实性的令牌。此值应妥善保管。

  • 配置 URL:此值指定对用户进行身份验证后 IdP 重定向到的 URL。URL 必须包括主机和协议(例如,https://admin.okta.com/oauth2/default/.well-known/openid-configuration),但 Tableau 会提供 URL 端点。此 URL 指定包含 OpenID 提供程序元数据的提供程序配置发现文档的位置。

    注意:如果您的 IdP 未提供配置 URL,请使用以 .well-known/openid-configuration 结尾的 URL。对于 Tableau Cloud,请考虑使用 Tableau REST API 中的 OpenID Connect 身份验证方法(链接在新窗口中打开)配置 OIDC。

可选参数

注意:仅适用于 Tableau Cloud。

可以使用 Tableau REST API 中的 OpenID Connect 身份验证方法(链接在新窗口中打开)配置以下可选参数。

  • 提示:提示用户重新认证并同意。默认情况下,用户同意处于打开状态。

  • 自定义范围:用于查询 IdP 的自定义范围用户相关值。

  • 客户端身份验证:令牌端点身份验证方法。默认值为 'client_secret_basic'。支持值 'client_secret_post'

  • 基本 ACR 值:用于身份验证的基本身份验证上下文参考类值的列表。

  • 自愿 ACR 值:用于身份验证的自愿身份验证上下文参考类值的列表。

声明

若要成功登录到 Tableau Cloud 或 TCM,必须在 OpenID Connect (OIDC) IdP 中预置给定用户,然后将其映射到 Tableau Cloud 或 TCM 上的用户帐户。OIDC 使用依赖于声明的方法与其他应用程序共享用户帐户属性。Tableau Cloud 或 TCM 依赖于 IdP 声明将 IdP 中的用户帐户映射到 Tableau Cloud 或 TCM 上托管的用户帐户。声明包括用户帐户属性,例如电子邮件、名字等。若要了解 Tableau Cloud 或 TCM 如何将 IdP 声明映射到用户帐户,请参见身份验证概述

注意:声明区分大小写。

  • 用户名:默认情况下,Tableau 期望 IdP 传递用户名声明。根据您的 IdP,您可能需要将 Tableau Cloud 配置为使用其他 IdP 声明。注意:Tableau 中的用户名是不可变的,无法随时更新。

  • 姓名声明:您可以指定姓名或姓氏来检索用户的 DisplayName。

  • 电子邮件声明:(可选)从 2025 年 7 月开始,您可以指定不同于用户名的电子邮件地址。电子邮件地址声明仅用于通知目的,不用于登录。

启用 OIDC 单点登录

步骤 1:配置 OpenID Connect

对于 Tableau Cloud

  1. 以站点管理员身份登录到 Tableau Cloud 并选择“设置”>“身份验证”

  2. 在“身份验证”选项卡上,单击“新配置”按钮,选择“OpenID Connect (OIDC)”,然后输入配置的名称。

  3. 按照以下步骤,通过执行以下操作来配置 Tableau Cloud 以进行 OIDC 身份验证:

    1. 在步骤 1 中,输入 IdP 提供的所需信息,包括客户端 ID、客户端密文和配置 URL。

    2. 在步骤 2 中,复制将粘贴到 IdP 门户中的 Tableau Cloud 重定向 URL,以在用户进行身份验证后重定向用户。

    3. 在步骤 3 中,输入声明以确保用户用户名和显示名称的正确映射。

    4. 在步骤 4 中,如果您的 IdP 支持,可以选择启用单点注销 (SLO)。

    5. 在步骤 5 中,可以选择用户在访问嵌入视图时进行身份验证的方式:在单独的弹出窗口中或使用内联 iFrame。

      注意:您可以在“身份验证”页面上的“嵌入视图的默认身份验证类型”部分(位于 OIDC 配置步骤下方)下选择嵌入视图的身份验证类型。

  4. 完成后,单击“保存更改”按钮。

注意:编辑 OIDC 配置时,客户端密文是隐藏的,需要重新输入才能保存任何更改。

对于 TCM

  1. 以云端管理员身份登录到 TCM,并选择“设置”>“身份验证”

  2. 在“身份验证”选项卡上,选中“启用其他身份验证方法”复选框。

  3. 从下拉菜单中选择“OpenID Connect (OIDC)”,并单击“配置(必需)”下拉箭头。

  4. 按照相关步骤,通过执行以下操作来配置 TCM 以进行 OIDC 身份验证:

    1. 在步骤 1 中,输入 IdP 提供的所需信息,包括客户端 ID、客户端密文和配置 URL。

    2. 在步骤 2 中,复制将粘贴到 IdP 门户中的 TCM 重定向 URL,以在用户进行身份验证后重定向用户。

    3. 在步骤 3 中,输入声明以确保用户用户名和显示名称的正确映射。

    4. 在步骤 4 中,如果您的 IdP 支持,可以选择启用单点注销 (SLO)。

  5. 完成后,单击“保存更改”按钮。

注意:编辑 OIDC 配置时,客户端密文是隐藏的,需要重新输入才能保存任何更改。

步骤 2:测试配置

我们强烈建议您测试配置以避免任何锁定情况。测试配置有助于确保在将用户的身份验证类型更改为 OIDC 之前正确配置了 OIDC。为了成功测试配置,请确保至少有一个您可以登录的用户,该用户已在 IdP 中预置并添加到 Tableau Cloud 或 TCM 中,并配置了 OIDC 身份验证类型。

注意:如果您不确定声明是什么,请完成配置并测试配置。测试配置将生成一个新窗口,其中包含声明映射详细信息,包括用户名和显示名称声明。某些 IdP 可能会将电子邮件地址映射到 Tableau 用户名。

对于 Tableau Cloud

  1. 在选择 OpenID Connect (OIDC) 的“身份验证”选项卡上,在步骤 6 下单击“测试配置”按钮。将显示一个新窗口,其中包含有关配置的详细信息。

  2. 完成后,按照以下步骤将用户添加到您的站点,从而完成 OIDC 设置。

对于 TCM

  1. 在选择 OpenID Connect (OIDC) 的“身份验证”选项卡上,在步骤 5 下单击“测试配置”按钮。将显示一个新窗口,其中包含有关配置的详细信息。

  2. 完成后,按照以下步骤将用户添加到您的租户,从而完成 OIDC 设置。

步骤 3:将用户添加到启用 OpenID Connect 的 Tableau 站点 或 TCM

本部分中描述的步骤是在 Tableau Cloud 或 TCM“用户”页面上执行的。

  1. 完成上述步骤后,返回 Tableau Cloud 站点或 TCM。

  2. 从左侧窗格中,选择“用户”页面。

  3. 按照以下主题之一中描述的步骤进行操作:

疑难解答

使用以下部分在 Tableau Cloud 或 TCM 中排查 OpenID Connect (OIDC) 问题。

许多身份提供程序支持 OIDC 协议。OIDC 协议是一个开放和灵活的标准,因此,并非所有标准实现都是相同的。管理员在为 OIDC 配置 Tableau Cloud 或 TCM 时遇到的大多数问题是不同身份提供程序实现 OIDC 的结果。如果您在设置 OIDC 以及 Tableau 时遇到错误,我们建议您使用 IdP 来解决它们。

从命令行登录

对于 Tableau Cloud

即使 Tableau Cloud 配置为使用 OIDC,但如果您使用 tabcmdTableau REST API(链接在新窗口中打开)Tableau 数据提取命令行实用工具(链接在新窗口中打开)(随 Tableau Desktop 提供)登录 Tableau Cloud,也不会使用 OIDC 身份验证。

对于 TCM

同样,即使 TCM 配置为使用 OIDC,登录 Tableau Cloud Manager REST API(链接在新窗口中打开) 时也不会使用 OIDC 身份验证。

登录失败

在某些情况下,登录 Tableau Cloud 或 TCM 可能会失败并显示以下消息:

Login failure: Identity Provider authentication unsuccessful for user <username_from_IdP>.Failed to find the user in Tableau Cloud.(登录失败:用户 <username_from_IdP> 的身份提供程序身份验证成功。未能在 Tableau Cloud 中找到用户。)

此错误通常意味着 Tableau 中存储的用户名与 IdP 提供的用户名之间存在不匹配。为了解决此问题,请确保用户名值匹配。例如,如果 Jane Smith 的用户名在 IdP 中存储为“jsmith@example.com”,那么它在 Tableau Cloud 或 TCM 中也必须存储为“jsmith@example.com”。

使用用户属性自定义和控制数据访问

用户属性是组织定义的用户元数据。在典型的基于属性的访问控制 (ABAC) 授权模型中,用户属性可用于确定访问权限。用户属性可以是用户配置文件的任何方面,包括工作角色、部门成员身份、管理级别等。它们还可能与运行时用户上下文相关联,例如用户的登录位置或他们的语言首选项。

通过在工作流中包含用户属性,您可以通过数据访问和个性化来控制和自定义用户体验。

  • 数据访问:用户属性可用于实施数据安全策略。这可以确保用户只能看到他们有权查看的信息。
  • 个性化:通过传递位置和角色等用户属性,可以自定义内容以仅显示与访问内容的用户相关的信息,从而使他们能够更轻松地找到所需的信息。

传递用户属性的步骤摘要

在工作流中启用用户属性的过程总结为以下步骤:

  1. 启用用户属性设置
  2. 在 JWT 中包括用户属性
  3. 确保内容作者包括用户属性函数和相关筛选器
  4. 查看内容

步骤 1:启用用户属性设置

出于安全目的,仅当站点管理员启用用户属性设置时,才会在身份验证工作流中验证用户属性。

  1. 登录到 Tableau Cloud 并单击“设置”>“身份验证”

  2. 在“控制身份验证工作流程中的用户访问”标题下,选中“在身份验证工作流中启用用户属性捕获”复选框。

有关站点设置的详细信息,请参见在身份验证工作流程中控制用户访问

步骤 2:在 JWT 中包括用户属性声明

确保 JSON Web 令牌 (JWT) 包含用户属性。

注意:JWT 中的属性受 4096 个字符限制的约束,但 scpscope 属性除外。如果 JWT 中的属性(包括用户属性)超过此限制,Tableau 将移除这些属性并改为传递 ExtraAttributesRemoved 属性。然后,内容作者可以使用 ExtraAttributesRemoved 属性创建一个计算,以确定在检测到该属性后如何向用户显示内容。

示例

假设您有一名员工 Fred Suzuki,他是南部区域的经理。您需要确保,当 Fred 审阅报告时,他只能看到南部区域的数据。在这种情况下,您可能会在 JWT 中包括 Region 用户属性,如下例所示。

{
"iss":"https://myidp.okta.com/oauth2/default,
"sub": user,
"aud": "Tableau",
"email": "fsuzuki@example.com",
"email_verified": true,
"name": "Fred Suzuki",
"region": "South"
}

步骤 3:确保内容作者包括属性函数

确保内容作者包括用户属性函数和相关筛选器,以控制哪些数据可以显示在其内容中。为了确保将用户属性声明传递给 Tableau,内容必须包含以下用户属性函数之一:

  • USERATTRIBUTE('attribute_name')
  • USERATTRIBUTEINCLUDES('attribute_name', 'expected_value')

内容作者使用的函数取决于用户属性是预期返回单个值还是多个值。有关这些函数及其示例的详细信息,请参见 Tableau 帮助中的用户函数(链接在新窗口中打开)

注意:

  • 在 Tableau Desktop 或 Tableau Cloud 中进行制作时,无法预览包含这些函数的内容。函数将返回 NULL 或 FALSE 。为确保用户函数按预期工作,我们建议作者在提供内容后查看函数。
  • 为了确保内容按预期呈现,内容作者可以考虑包括一个使用 ExtraAttributesRemoved 执行以下操作的计算:1) 检查此属性,以及 2) 如果检查到该属性,则确定如何处理该内容,例如显示一条消息。Tableau 只会在 JWT 中的属性超过 4096 个字符时添加 ExtraAttributesRemoved 属性并移除所有其他属性(scpscope 除外)。这是为了确保最佳性能并遵守存储限制。

示例

继续上面的步骤 2:在 JWT 中包括用户属性声明中介绍的示例,若要将“Region”用户属性声明传递给工作簿,作者可以包括 USERATTRIBUTEINCLUDES。例如,USERATTRIBUTEINCLUDES('Region', [Region]),其中“Region”是用户属性,[Region] 是数据中的一列。使用新计算,作者可以创建一个包含经理和销售额数据的表。添加计算后,工作簿将按预期返回“False”值。

若要在嵌入式工作簿中仅显示与南部区域关联的数据,作者可以创建一个筛选器并对其进行自定义,以便在南部区域为“True”时显示值。应用筛选器后,工作簿将按预期变为空白,因为函数返回“False”值,并且筛选器自定义为仅显示“True”值。

步骤 4:查看内容

查看和验证内容。

示例

为了结束上述步骤 3:确保内容作者包括属性函数中的示例,您可以看到视图中的销售额数据是针对 Fred Suzuki 自定义的,因为他的用户上下文是南部区域。

工作簿中所代表区域的经理应会看到与其区域关联的值。例如,来自西部区域的 Sawdie Pawthorne 会看到特定于她所在区域的数据。

工作簿中未显示其区域的经理将看到空白工作簿。

已知问题和限制

使用用户属性函数时应考虑一些已知问题和限制。

使用 Tableau REST API 的空白图像

Tableau REST API 请求“查询预览图像(链接在新窗口中打开)”、“查询工作簿图像”(链接在新窗口中打开)“获取自定义视图图像”(链接在新窗口中打开)会生成空白图像。

限制

  • 不支持已发布数据源 (.pds) 中的用户属性函数。
  • 不支持 Tableau Bridge 工作流中的用户属性函数。
感谢您的反馈!您的反馈已成功提交。谢谢!