使用 OpenID Connect 的要求

本主题介绍将 OpenID Connect 与 Tableau Server 结合使用的要求。

IdP 帐户

您必须对支持 OpenID Connect (OIDC) 协议的身份提供程序 (IdP) 具有访问权限。您还必须拥有 IdP 帐户。许多身份提供程序支持 OpenID Connect。OIDC 协议是一个开放和灵活的标准,因此,并非所有标准实现都是相同的。针对 OIDC 配置 Tableau Server 时,使用您的 IdP。

Google IdP 实施已使用 Tableau Server 进行了广泛测试,并且是这些主题中记录的配置的模型 IdP。

本地身份存储

若要在 Tableau Server 上使用 OpenID Connect ,必须将服务器配置为使用本地身份存储。必须配置服务器,以便在 Tableau Server 上显式创建用户,而不是从外部目录(例如 Active Directory)导入用户。OpenID 不支持使用外部身份存储管理用户。

IdP 声明:映射用户

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

Tableau Server 依赖于 IdP 声明将 IdP 中的用户帐户映射到 Tableau Server 上托管的用户帐户。默认情况下,Tableau Server 希望 IdP 传递电子邮件声明。根据您的 IdP,您可能需要将 Tableau Server 配置为使用其他 IdP 声明。

如果使用 Google 作为 IdP,则使用默认的 email 声明将 IdP 身份映射到 Tableau Server 用户帐户。如果未使用 Google 作为 IdP,则与您的 IdP 合作来确定应针对其配置 Tableau Server 的声明。

默认值:使用 email 声明来映射用户

默认情况下,Tableau Server 中用户的用户名必须与 IdP ID 令牌中的 email 声明匹配。因此,在默认配置中,您必须使用电子邮件地址(也称为 UPN)作为 Tableau Server 中的用户名。如果使用 Google 作为 IdP,Tableau Server 中的用户名必须是用户的 Gmail 地址 (alice@gmail.com)。使用完整的电子邮件地址可帮助保证用户名在 Tableau Server 中的唯一性,即使两个用户具有相同的电子邮件但位于不同的电子邮件主机上也是如此。

注意: 在 Tableau Server 中创建用户身份时,您将指定用户名、密码,并根据需要指定电子邮件地址。对于在默认配置中使用 OpenID Connect,用户名(表示为电子邮件地址)是必须与用户在 IdP 中的名称匹配的值。Tableau Server 用户身份中的可选电子邮件地址不用于 OpenID 身份验证。

忽略域名

将 IdP email 声明匹配至 Tableau Server 上的用户帐户时,您可以将 Tableau 配置为忽略电子邮件地址的域部分。在此情形下,IdP 中的 email 声明可能是 alice@example.com,但此用户将与 Tableau Server 中名为 alice 的用户匹配。如果已在 Tableau Server 中定义了与 email 声明的用户名部分匹配(但与域部分不匹配)的用户,则忽略域名可能很有用。

重要信息:在未采取预防措施的情况下,我们不建议忽略用户域名。具体来说,请验证用户名在您在 IdP 中创建的已配置域中是否唯一。

如果将 Tableau Server 设置为忽略用户域名,则可能会导致意外的用户登录。请考虑为多个域(example.comtableau.com)配置了您的 IdP 的情况。如果组织中有两个名字相同但用户帐户(alice@tableau.comalice@example.com)不同的用户,则要完成 OpenID 配置顺序的第一个用户将在 IdP 中声明 sub 映射。如果映射了错误的用户,则另一个用户将无法登录,直到重置关联的 sub 值为止。

若要将 Tableau Server 配置为从 IdP 中忽略用户名中的域名,请将 tsm authentication openid configure --ignore-domain 设置为 true。有关详细信息,请参见tsm authentication openid <commands>

更改 tsm authentication openid configure --ignore-domain 选项以忽略用户名中的域时,Tableau Server 中的所有用户名都必须有域名。

使用自定义声明映射用户

身份验证概述中所述,IdP 声明中通常包括 sub 声明。通常,sub 声明是标识给定用户帐户的唯一字符串。使用 sub 声明的好处在于:即使您或其他管理员更新了与该帐户关联的其他用户属性或 IdP 声明(电子邮件、电话号码等),它也不会更改。默认情况下,Tableau Server 依据 IdP ID 令牌中的 sub 声明来识别和验证 OpenID 用户。

必须将 OpenID sub 声明值映射到 Tableau Server 中的对应用户。因为 sub 声明是任意字符串,因此在首次登录会话期间会使用不同的声明来关联帐户。用户首次使用 OpenID 登录到 Tableau Server 时,Tableau 会将 OpenID 用户帐户与 Tableau 上的对应用户帐户匹配。默认情况下,Tableau 将使用 IdP 声明 email 来标识 Tableau 用户。Tableau 随后将使用 OpenID 中的 sub 声明更新该用户的记录。由于 ID 令牌始终随其他令牌一起包括 sub 声明,因此,在后续会话中,Tableau 将仅使用 sub 声明来标识该用户。

对于某些组织,使用电子邮件地址映射用户名不可靠,并且不受 IdP 支持。从 Tableau Server 10.2 开始,您可以将任何 IdP 声明中的用户帐户映射到 Tableau Server 用户名。

您使用的 IdP 声明必须确切映射到对应的 Tableau Server 用户名。在下面的示例中,用户名为 kwilliams

若要更改用于在 Tableau Server 上映射身份的 IdP 声明,请使用 tsm authentication openid map-claims --user-name 命令。有关详细信息,请参见tsm authentication openid <commands>

更改 sub 声明

如上所述,sub 声明是 Tableau Server 用于在初始映射会话后标识用户的标识符。sub 声明将写入 Tableau Server 中的对应用户帐户。如果您的 IdP 未提供 sub 声明,则您可以改为指定使用任何声明。像 sub 一样,您指定的声明值必须唯一,并且在其他用户声明更新时不应更改。

若要为默认 sub 声明指定其他 IdP 声明,请使用 tsm authentication openid map-claims --id 命令。有关详细信息,请参见tsm authentication openid <commands>

其中,arbitraryClaim 是要用作 sub 声明替代项的 IdP 声明的名称。

身份验证上下文

如果您的 OpenID Connect IdP 需要特定的身份验证上下文,您可以使用 vizportal.openid.essential_acr_valuesvizportal.openid.voluntary_acr_values 配置键指定密钥指定基本和自愿 ACR 值列表。有关详细信息,请参见tsm configuration set 选项

感谢您的反馈!