针对 OpenID Connect 配置 Tableau Server

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

  1. OpenID Connect 概述

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

  3. 针对 OpenID Connect 配置 Tableau Server(此部分)

  4. 使用 OpenID Connect 登录到 Tableau Server

注意:

  1. 在浏览器中打开 TSM:

    https://<tsm-computer-name>:8850。有关详细信息,请参见登录到 Tableau 服务管理器 Web UI

  2. “配置”选项卡上,选择“用户身份和访问”>“身份验证方法”

  3. “身份验证方法”下的下拉菜单中选择“OpenID Connect”

  4. 在“OpenID Connect”下,选择“为服务器启用 OpenID 身份验证”

  5. 输入组织的 OpenID 配置信息:

    TSM 中的 OpenID Connect 配置的图像

    注意:

    • 对于步骤 3:如果提供程序依赖于本地计算机上托管的配置文件(而不是在公共 URL 处托管的文件),您可以使用 tsm authentication openid <commands> 指定文件。使用 --metadata-file <file_path> 选项指定本地 IdP 配置文件。

    • 对于步骤 4:从 Tableau Server 2025.3 开始,您可以启用单点注销 (SLO) 并指定注销后要将用户重定向到的 URL。

    • 对于步骤 5:从 Tableau Server 2026.2 开始,您可以在 OIDC 身份验证工作流中启用用户属性及其功能。有关详细信息,请参见OIDC 声明中的用户属性

  6. 输入配置信息后,单击“保存待处理的更改”

  7. 单击页面顶部的“待定更改”

    指示有待定更改的 Tableau Server Manager 工具栏。

  8. 单击“应用更改并重新启动”

此部分中的过程描述如何使用 TSM 命令行接口来配置 OpenID Connect。您也可以使用配置文件来进行 OpenID Connect 的初始配置。请参见openIDSettings 实体

  1. 使用tsm authentication openid <commands>configure 命令设置以下必需选项:

    • --client-id <id>:指定 IdP 已分配给您的应用程序的提供程序客户端 ID。例如,“xxxkjwdlnaoiloadjkwha"

    • --client-secret <secret>:指定提供程序客户端密文。这是 Tableau 用于验证来自 IdP 的响应的真实性的令牌。此值是密文,应妥善保管。例如,“xxxhfkjaw72123="

    • --config-url <url>--metadata-file <file_path>:指定提供程序配置 json 文件的位置。如果提供程序承载公共 JSON 发现文件,则使用 --config-url。否则,请改为指定本地计算机上的一个路径,并为 --metadata-file 指定文件名。

    • --return-url <url>:服务器的 URL。这通常是您的服务器的公共名称,例如 "http://example.tableau.com"

    例如,运行以下命令:

    tsm authentication openid configure --client-id “xxxkjwdlnaoiloadjkwha" --client-secret “xxxhfkjaw72123=" --config-url "https://example.com/openid-configuration" --return-url "http://tableau.example.com"

    注意: 

  2. 键入以下命令以启用 Open ID Connect:

    tsm authentication openid enable

  3. 运行 tsm pending-changes apply 以应用更改。

    如果待定更改需要重新启动服务器,pending-changes apply 命令将显示一个提示,告知您将进行重新启动。即使服务器已停止,此提示也会显示,但在这种情况下不会重新启动。您可以使用 --ignore-prompt 选项隐藏提示,但这样做不会改变重新启动行为。如果更改不需要重新启动,则会在不提示的情况下应用更改。有关详细信息,请参见tsm pending-changes apply

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

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

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

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

传递用户属性的步骤摘要

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

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

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

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

  1. 在浏览器中打开 TSM:

    https://<tsm-computer-name>:8850。有关详细信息,请参见登录到 Tableau 服务管理器 Web UI

  2. “配置”选项卡上,选择“用户身份和访问”>“身份验证方法”

  3. “身份验证方法”下的下拉菜单中,选择“SAML”

  4. “步骤 8”下,选中“在 SAML 身份验证期间启用用户属性捕获”复选框。

  5. 完成后,执行以下操作:

    1. 单击“保存未完成的更改”

    2. 单击页面顶部的“待定更改”按钮。

    3. 单击“应用更改并重新启动”

步骤 2:在断言中包括用户属性

请确保断言包含用户属性。

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

示例

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

<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
	<saml;Issuer">https://myidp.okta.com/saml</saml:Issuer">
   <saml;Subject">
	  <saml:NameId Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"fsuzuki@example.com</saml:NameID">
   <saml:AttributeStatement xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
  		<saml:Attribute Name="Region" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
  			<saml:AttributeValue">South</saml:AttributeValue">
    	</saml:Attribute">
   </saml:AttributeStatement">
</saml:Assertion">

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

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

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

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

注意:

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

示例

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

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

步骤 4:查看内容

查看和验证内容。

示例

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

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

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

已知问题和限制

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

感谢您的反馈!您的反馈已成功提交。谢谢!