针对 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。

配置 OpenID 以使用转发代理

默认情况下,Tableau Server 会忽略代理设置并将所有 OpenID 请求直接发送到 IdP。

从 Tableau Server 2021.2.2 及更高版本开始,如果 Tableau 配置为使用转发代理连接到 Internet,则您可以将 Tableau Server 配置为使用代理主机和端口设置来联系 OpenID IdP。

您配置 Tableau Server 的方式因您在组织中实施转发代理的方式而异:

  • 在运行 Tableau Server 的 Windows 计算机上配置转发代理。
  • Tableau Server 将所有出站流量直接发送到组织中运行的转发代理服务器。

Windows系统代理配置

如果您的组织已在每台 Windows 计算机上配置转发代理,请使用此方法为 Tableau Server 上的 OpenID 使用系统代理配置。运行以下命令:

tsm configuration set -k tomcat.useSystemProxies -v true
tsm pending-changes apply

转发代理服务器

使用命令 tsm configuration set 进行更改。

  • 对于 HTTPS 代理主机,请使用以下键值对:

    -k tomcat.https.proxyHost -v host.domain

    -k tomcat.https.proxyPort -v port_number

    例如,如果您的代理服务器位于 https://proxy.example.lan:8443,则运行以下命令:

    tsm configuration set -k tomcat.https.proxyHost -v proxy.example.lan
    tsm configuration set -k tomcat.https.proxyPort -v 8443
    tsm pending-changes apply
  • 对于 HTTP 代理主机,请使用以下键值对:

    -k tomcat.http.proxyHost -v host.domain

    -k tomcat.http.proxyPort -v port_number

    设置这些键后,运行 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 个字符限制的约束,但 scp 或 scope 属性除外。如果响应中的属性(包括用户属性)超过此限制,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 属性并移除所有其他属性( scp 或 scope 除外)。这是为了确保最佳性能并遵守存储限制。

示例

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

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

步骤 4:查看内容

查看和验证内容。

示例

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

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

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

已知问题和限制

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

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