SAML 要求

在 Tableau Server 上配置 SAML 之前,确保您的环境满足要求。

重要信息:IdP 和 Tableau Server 上的 SAML 配置都区分大小写。例如,使用 IdP 和 Tableau Server 上配置的 URL 必须完全匹配。

证书和身份提供程序 (IdP) 要求

若要将 Tableau Server 配置为使用 SAML,您需要以下内容:

  • 证书文件PEM 编码的 x509 证书文件,扩展名为 .crt。此文件由 Tableau Server 而不是 IdP 使用。如果有 SSL 证书,在某些情况下您可以将同一个证书与 SAML 一起使用。有关详细信息,请参见本文后面的为 SAML 使用 SSL 证书和密钥文件

    Tableau Server 需要证书密钥对来签署发送到 IdP 的请求。这减少了中间人攻击的威胁,因为难以欺骗签名的请求。此外,Tableau Server 会验证它收到的 AuthNResponse 是否来自从受信任的 IdP。Tableau Server 使用 IdP 生成的签名验证 AuthNResponse。IdP 证书元数据在初始 SAML 配置过程中提供给 Tableau Server。

    并非所有 IdP 都需要签名的请求。默认情况下,Tableau Server 需要签名的请求。我们建议使用此配置,以确保与 IdP 的通信传输更安全。与您的 IdP 团队合作,了解是否需要禁用签名的请求。若要禁用签名的请求,请参见samlSettings 实体

  • 签名算法。证书必须使用安全签名算法,例如 SHA-256。如果您尝试通过使用 SHA-1 签名哈希的证书为 SAML 配置 Tableau Server,则 Tableau Server 将拒绝该证书。您可以通过设置 tsm wgserver.saml.blocklisted_digest_algorithms 配置键,将 Tableau Server 配置为接受安全性较低的 SHA-1 哈希。

  • RSA 密钥和 ECDSA 曲线大小。证书的 RSA 密钥强度必须为 2048,或者 ECDSA 曲线大小为 256。

    您可以通过设置相应的配置键 wgserver.saml.min_allowed.rsa_key_sizewgserver.saml.min_allowed.elliptic_curve_size,将 Tableau Server 配置为安全性较低的大小。

  • 证书密钥文件RSA 或 DSA 私钥文件,扩展名为 .key。RSA 密钥必须为 PKCS#1 或 PKCS#8 格式。

    密码保护要求如下所示:

    • 无法使用密码保护 PKCS#1 RSA 密钥文件。
    • 若要使用密码保护的密钥文件,您必须使用 RSA PKCS#8 文件配置 SAML。请注意,不支持包含 null 密码的 PKCS#8 文件。
    • 特定于站点的 SAML 部署不支持受密码保护的密钥文件。

    支持概要

    密钥文件格式 服务器范围 SAML 支持 站点级别 SAML 支持
    PKCS#8 RSA
    PKCS#8(无密码/空密码)
    PKCS#1 RSA -
    PKCS#1 RSA(密码)
    PKCS#1 DSA(密码)
  • IdP 必须使用安全的签名算法对 SAML 断言进行签名。默认情况下,Tableau Server 将拒绝使用 SHA-1 算法签名的 SAML 断言。您可以通过设置 tsm wgserver.saml.blocklisted_digest_algorithms 配置键,将 Tableau Server 配置为接受使用安全性较低的 SHA-1 哈希签名的断言。

  • 支持 SAML 2.0 或更高版本的 IdP 帐户您需要一个外部身份提供程序帐户。一些示例包括 PingFederate、SiteMinder 和 Open AM。

  • 支持导入和导出 XML 元数据的 IdP 提供程序尽管手动创建的元数据文件可以工作,但 Tableau 技术支持无法协助进行生成该文件或排除其问题。

SSL 卸载

如果在将身份验证请求发送到 Tableau Server 之前,您的组织在代理服务器处终止了来自 IdP 的 SSL 连接,则您可能需要进行代理配置。在这种情况下,SSL 在代理服务器处被“卸载”,这意味着 https 请求在代理服务器处被终止,然后通过 http 转发到 Tableau Server。

Tableau Server 将验证从 IdP 返回的 SAML 响应消息。由于 SSL 在代理处被卸载,因此 Tableau Server 将使用它收到的协议进行验证,但 IdP 响应的格式是使用 https 设置的,因此验证将失败,除非代理服务器包括设置为 https 的 X-Forwarded-Proto 标头。请参见将 Tableau Server 配置为使用反向代理服务器

为 SAML 使用 SSL 证书和密钥文件

如果将 PEM 编码的 x509 证书文件用于 SSL,则可以将同一个文件用于 SAML。对于 SSL,证书文件用于加密流量。对于 SAML,证书用于进行身份验证。

除了上面的证书和身份提供程序 (IdP) 要求中列出的要求外,若要为 SSL 和 SAML 使用相同的证书,证书还必须满足以下条件才能用于 SAML:

  • 确认证书仅包含适用于 Tableau Server 的证书,而不包含任何其他证书或密钥。

    为此,您可以创建证书文件的备份副本,然后在文本编辑器中打开该副本以查看其内容。

用户管理要求

如果启用 SAML,用户身份验证将在 Tableau 外部通过 IdP 执行。但是,用户管理通过身份存储执行:外部身份存储(Active Directory 或 LDAP),或由 Tableau Server 在本地身份存储中执行。有关使用 Tableau Server 规划用户管理的详细信息,请参见身份存储

在安装过程中配置用户身份验证时,您必须选择反映所需 SAML 使用方式的选项。如果要使用特定于站点的 SAML,您必须在配置单独站点之前先配置服务器范围 SAML。

  • 对于特定于站点的 SAML:如果在 Tableau Server 上有多个站点,并且希望为特定 IdP 或 IdP 应用程序设置每个站点(或将某些站点配置为不使用 SAML),请将 Tableau Server 配置为使用本地身份存储管理用户。对于特定于站点的 SAML,Tableau Server 依靠 IdP 进行身份验证,并且不使用密码。

  • 对于服务器范围 SAML:如果配置具有单一 IdP 的服务器范围 SAML,您可以将 Tableau Server 配置为使用本地身份存储或外部身份存储。如果要使用 Active Directory,则必须禁用“启用自动登录”选项。

  • 服务器范围 SAML 身份验证和特定于站点的 SAML 身份验证。在多站点环境中,所有用户都通过在站点级别配置的 SAML IdP 进行身份验证。在这种方案中,您将为属于多个站点的用户指定服务器范围的默认 SAML IdP。若要配置此方案,Tableau Server 必须配置为使用本地身份存储。

注意: REST APItabcmd 不支持 SAML 单点登录 (SSO)。若要登录,您必须指定已在服务器上创建的用户的名称和密码。可以通过本地身份存储或外部身份存储管理用户,具体取决于您配置 Tableau Server 的方式。对于 Tableau Online,您可以指定用户的 TableauID 凭据。REST API 或 tabcmd 调用将具有您在登录时使用的用户的权限。

SAML 兼容性注意事项和要求

  • 匹配的用户名:存储在 Tableau Server 中的用户名必须与 IdP 在 SAML 断言中发送的已配置用户名属性匹配。默认情况下,Tableau Server 期望传入断言包含名为“username”的属性以及该用户的信息。举例来说,如果 Jane Smith 的用户名在 PingFederate 中存储为 jsmith,那么它在 Tableau Server 中也必须存储为 jsmith

    在身份验证期间配置 SAML 时

    如果要在初始 Tableau Server 设置过程中配置 SAML,请在运行安装程序之前确保您的 IdP 存在计划使用的帐户。在 Tableau Server 设置过程中,您将创建服务器管理员帐户。

    运行多个域时

    如果使用 Active Directory 或 LDAP 外部身份存储,并且在多个域中运行(也就是说,用户属于多个域或 Tableau Server 安装包括多个域),则 IdP 必须在 SAML 断言中为用户同时发送用户名域属性。。这些用户名和域属性都必须与 Tableau Server 中存储的用户名和域完全匹配。为用户属性使用 domain\username 格式,并为域属性使用完全限定的域名 (FQDN)。如果不包含域属性,则将为所有用户使用 Tableau Server 计算机的域(也称为默认域)。如果用户与 Tableau Server 计算机不在同一个域中,则排除域属性将导致登录错误。

    有关详细信息,请参见支持多个域配置服务器范围 SAML“使用TSM CLI”中的“匹配断言”部分。

  • 签名算法:许多 IdP 默认使用 SHA256。IdP 和 Tableau Server 签名算法之间的不匹配将导致 SAML 身份验证失败。例如,您的 idP 可能需要 SHA-256 签名的断言,但是传入的断言或上载的证书是使用 SHA-1 签名的,因此您可以强制将传出的 SAML 声明用 SHA-256 签名。

    若要更改为 SHA256,请在初始配置期间将 sHA256Enabled 配置实体设置为 true。请参见samlSettings 实体。您还可以通过运行以下 TSM 命令来更改为 SHA256:

    tsm configuration set -k wgserver.saml.sha256 -v true

  • 单点注销 (SLO):Tableau Server 支持服务提供商 (SP) 启动的 SLO,用于服务器范围的 SAML 和特定于站点的 SAML。但是,Tableau Server 不支持身份提供程序 (IdP) 启动的 SLO。

  • 外部身份验证类型:Tableau Server 支持一次使用一种外部身份验证类型。

  • 相互 SSL:Tableau Server 不同时支持相互 SSL(双向 SSL)和 SAML。如果要使用相互 SSL,您可以在 IdP 上对其进行配置。

  • 断言编码:断言必须为 UTF-8 编码。

  • 加密和 SAML 断言:针对服务器范围 SAML 进行配置时,Tableau Server 支持来自 IdP 的加密断言。作为服务器范围 SAML 的初始配置的一部分,您上传的证书将启用加密断言。

    针对特定于站点的 SAML 进行配置时,Tableau Server 不支持来自 IdP 的加密断言。但是,所有 SAML 请求和响应都通过 HTTPS 发送。

  • Tableau Server 中适用于 tabcmd 用户的用户标识:如上面的用户管理要求部分中所述,若要使用 tabcmd,您必须以服务器上定义的用户身份登录。您不能将 SAML 帐户与 tabcmd 一起使用。

  • 将 SAML SSO 与 Tableau Desktop 结合使用:默认情况下,Tableau Desktop 允许 SP 发起的 SAML 身份验证。

    如果您的 IdP 不支持此功能,您可以使用以下命令为 Tableau Desktop 禁用 SAML 登录。

    tsm authentication saml configure --desktop-access disable

    有关详细信息,请参见 tsm authentication saml <commands>

  • 分布式安装:TSM 版本的 Tableau Server(2018.2 及更高版本)使用客户端文件服务在多节点群集中共享文件。在群集中的初始节点上配置 SAML 后,客户端文件服务会将证书和密钥文件分发到其他节点。

  • 登录 URL:为了使用户能够登录,您的 IdP 必须配置为具有可将 POST 请求发送到以下 URL 的 SAML 登录端点:

    https://<tableauserver>/wg/saml/SSO/index.html

  • 注销 URL:为了使用户能够在使用 SAML 登录后注销(单点注销,或 SLO),您的 IdP 必须配置为具有可将 POST 请求发送到以下 URL 的 SAML 注销端点:

    https://<tableauserver>/wg/saml/SingleLogout/index.html

    注意:服务器范围和特定于站点的 SAML 支持 SP 发起的 SLO。但是,不支持 IdP 发起的 SLO。

  • 注销后重定义 URL:默认情况下,当用户注销 Tableau Server 时,将显示登录页面。 

    若要在注销后显示其他页面,请带 -su--signout-url 选项使用 tsm authentication saml configure 命令。

    • 若要指定绝对 URL,请使用以 http://https:// 开头的完全限定的 URL,如此示例中所示:

      tsm authentication saml configure -su https://example.com

    • 若要指定相对于 Tableau Server 主机的 URL,请使用以 /(斜杠)开头的页面:

      tsm authentication saml configure -su /ourlogoutpage.html

  • Active Directory 联合服务 (AD FS):您必须配置 AD FS 以返回使用 SAML 的 Tableau 身份验证的其他属性。Name IDusername 属性可映射到相同的 AD 属性:SAM 帐户名称

    有关配置信息,请参见在 Tableau Server 上使用 AD FS 配置 SAML

  • AuthNContextClassRef:AuthNContextClassRef 是一个可选的 SAML 属性,用于强制验证 IdP 启动的流程中的某些身份验证“上下文”。您可以使用 TSM 为此属性设置逗号分隔值。设置此属性后,Tableau Server 将验证 SAML 响应是否至少包含列出的值之一。如果 SAML 响应不包含配置的值之一,则即使用户已成功使用 IdP 进行身份验证,身份验证也将被拒绝。

    将此可选属性留空将导致默认行为:任何成功经过身份验证的 SAML 响应都将导致用户在 Tableau Server 中被授予会话。

    仅支持为服务器范围 SAML 评估该值。如果配置了站点 SAML,则将忽略 AuthNContextClassRef 该属性。

    若要使用 TSM Web 界面设置此值,请参见配置服务器范围 SAML

    若要使用 tsm configuration set设置此值,请使用 wgserver.saml.authcontexts 键设置逗号分隔的值列表。

    若要使用 JSON 配置文件设置此值,请参见samlSettings 实体

将 SAML SSO 用于 Tableau 客户端应用程序

Tableau Server 用户(具有 SAML 凭据)可从 Tableau Desktop 或 Tableau Mobile 应用登录到服务器。为了全面兼容,我们建议 Tableau 客户端应用程序版本与服务器的版本匹配。若要使用特定于站点的 SAML 进行连接,用户必须运行 Tableau 客户端应用程序版本 10.0 或更高版本。

从 Tableau Desktop 或 Tableau Mobile 连接到 Tableau Server 时,将使用服务提供程序 (SP) 发起的连接。

将经过身份验证的用户重定向回 Tableau 客户端

用户登录到 Tableau Server 时,Tableau Server 会向 IdP 发送一个 SAML 请求 (AuthnRequest),其中包括 Tableau 应用程序的 RelayState 值。如果用户已通过诸如 Tableau Desktop 或 Tableau Mobile 等 Tableau 客户端登录到 Tableau Server,则在 IdP 对 Tableau 的 SAML 响应内返回 RelayState 值至关重要。

如果在此情形下未正确返回 RelayState 值,则会在 Web 浏览器中将用户转向其 Tableau Server 主页,而不是重定向回他们从中登录的应用程序。

与身份提供商和内部 IT 团队合作,确认此值将包括在 IdP 的 SAML 响应内,然后由位于 IdP 和 Tableau Server 之间的任何网络设备(例如代理或负载平衡器)保留。

XML 数据要求

在 SAML 配置过程中,您会在 Tableau Server 和 IdP 之间交换 XML 元数据。此 XML 元数据用于在用户启动 Tableau Server 登录过程时验证用户的身份验证信息。

Tableau Server 和 IdP 都各自会生成自己的元数据。每组元数据都必须包含以下列表中描述的信息。如果任何一组元数据缺少信息,则在您配置 SAML 或在用户尝试登录时可能会发生错误。

  • HTTP POST:对于 SAML 通信,Tableau Server 只支持 HTTP POST 请求。不支持 HTTP 重定向。

  • Binding 属性设置为 HTTP-POST 的情况下,Tableau Server 和 IdP 每次导出的 SAML 元数据必须包含以下元素。

    • 指定身份验证成功后 IdP 重定向到的 URL 的元素。这是服务提供商元数据(而不是身份提供程序元数据)中所必需的。

      <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://<tableau-server>/wg/saml/SSO/index.html index="0" isDefault="true"/>

      对于站点 SAML,Location 端点为 /samlservice/public/sp/metadata?alias=<site alias>

    • 注销端点元素显示在 Tableau Server 元数据中,并指定 IdP 将用于 Tableau Server 的注销端点的 URL。如果此元素不在 IdP 元数据中,Tableau Server 将无法与 IdP 协调注销端点,并且“SAML 注销”功能在 Tableau Server 内将不可用:

      <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://SERVER-NAME:9031/idp/slo"

      注意:服务器范围和特定于站点的 SAML 都支持 SP 发起的 SLO。但是,不支持 IdP 发起的 SLO。

    • 验证您从 IdP 获得的元数据 XML 是否包括绑定设置为 HTTP-POSTSingleSignOnService 元素,如以下示例中所示:

      <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://SERVER-NAME:9031/idp/SSO.saml2"/>

    • 此元素应出现在 IdP 元数据中,并指定 Tableau Server 将用于 IdP 的注销端点的 URL。

      <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://SERVER-NAME:9031/idp/slo"/>

  • 名为 username 的属性:您必须配置 IdP 以返回在 saml:AttributeStatement 元素中包括 username 属性的声明。声明的属性类型必须为 xs:string应将其键入为 xs:any)。

    以下示例显示此项可能的样子。

    <saml:Assertion assertion-element-attributes>
      <saml:Issuer>issuer-information</saml:Issuer>
      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        ...
      </Signature>
      <saml:Subject>
        ...
      </saml:Subject>
      <saml:Conditions condition-attributes >
        ...
      </saml:Conditions>
      <saml:AuthnStatement authn-statement-attributes >
        ...
      </saml:AuthnStatement>
    
      <saml:AttributeStatement>
        <saml:Attribute Name="username" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
              user-name
        </saml:AttributeValue>
        </saml:Attribute>
      </saml:AttributeStatement>
    </saml:Assertion>

    默认情况下,Tableau Server 将在 Idp 返回的 AuthNResponse 中读取 username 属性。但是,某些 IdP 可能返回用于标识用户的不同属性。在这种情况下,可能需要更改 Tableau Server 为用户名读取的属性。为了成功进行身份验证,IdP 返回的属性的值必须与 Tableau Server 用户的实际用户名值相匹配。

    若要更改传递 username 值的 SAML 属性,请运行以下 TSM 命令:

    tsm authentication saml map-assertions --user-name <USER-NAME>

    请参见tsm authentication

感谢您的反馈!