---
schema_version: "1"
id: 9c63d8b0fd96c0f036c6bc22b32a16721308c405d4da88dc0ef9a60dde9d6d3a
title: 使用 OpenID Connect 的要求
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/server-linux/openid_auth_requirements.md
canonical_url: https://help.tableau.com/v0.0/server-linux/zh-cn/openid_auth_requirements.htm
source_site: help.tableau.com
content_type: documentation
content_hash: bb0d8d28fe1b015026ed64ad7e7de41d56cd7dea72fd4468bb35a4ad3ef329f6
description: Understand the requirements for using OpenID Connect with Tableau Server.
---
[跳转到主要内容](#main-content)

# 使用 OpenID Connect 的要求

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

**注意：**TSM 身份验证配置命令仅适用于 Tableau Server 设置期间在 TSM 中配置的 OIDC 身份验证。若要更改身份池的 OIDC 身份验证配置，您可以通过 Tableau REST OpenAPI 使用[更新身份验证配置](https://help.tableau.com/current/api/rest_api/zh-cn/REST/TAG/index.html#operation/AuthnService_UpdateAuthConfiguration)端点。

**要求摘要**

- IdP 帐户
- 本地身份存储
- IdP 声明 - 映射用户
- 身份验证上下文

## IdP 帐户

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

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

## 本地身份存储

若要在 Tableau Server 上使用 OpenID Connect，必须满足以下条件之一：

- **如果在 Tableau Server 设置期间在 TSM 中配置 OIDC**，必须将 Tableau Server 配置为使用本地身份存储。必须配置服务器，以便在 Tableau Server 上显式创建用户，而不是从外部目录（例如 Active Directory）导入用户。OpenID 不支持使用外部身份存储管理用户。
- **如果使用[身份池](https://help.tableau.com/v0.0/server-linux/zh-cn/identity_pools.htm)配置 OIDC**, OIDC 可以配置为具有 1) 本地身份存储，或者 2) AD 或 LDAP 是在 Tableau Server 设置期间在 TSM 中配置的身份存储。

## IdP 声明 - 映射用户

若要成功登录到 Tableau Server，必须在 OpenID 中配置给定用户，然后将其映射到 Tableau Server 上的用户帐户。OpenID 使用依赖于_声明_的方法与其他应用程序共享用户帐户属性。声明包括用户帐户属性，例如电子邮件、电话号码、名字等。若要了解 Tableau Server 如何将 IdP 声明映射到用户帐户，请参见[OpenID Connect](https://help.tableau.com/v0.0/server-linux/zh-cn/openid_auth.htm#Authenti)。

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.com` 和 `tableau.com`）配置了您的 IdP 的情况。如果组织中有两个名字相同但用户帐户（`alice@tableau.com` 和 `alice@example.com`）不同的用户，则要完成 OpenID 配置顺序的第一个用户将在 IdP 中声明 `sub` 映射。如果映射了错误的用户，则另一个用户将无法登录，直到重置关联的 `sub` 值为止。

若要将 Tableau Server 配置为从 IdP 中忽略用户名中的域名，请将 `tsm authentication openid configure --ignore-domain` 设置为 `true`。有关详细信息，请参见[tsm authentication openid <commands>](https://help.tableau.com/v0.0/server-linux/zh-cn/cli_authentication_tsm.htm#TSMOIDC)。

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

### 使用自定义声明映射用户

如[OpenID Connect](https://help.tableau.com/v0.0/server-linux/zh-cn/openid_auth.htm#Authenti)中所述，IdP 声明中通常包括 `sub` 声明。通常，`sub` 声明是标识给定用户帐户的唯一字符串。使用 `sub` 声明的好处在于：即使您或其他管理员更新了与该帐户关联的其他用户属性或 IdP 声明（电子邮件、电话号码等），它也不会更改。默认情况下，Tableau Server 依据 IdP ID 令牌中的 `sub` 声明来识别和验证 OpenID 用户。

必须将 OpenID `sub` 声明值映射到 Tableau Server 中的对应用户。因为 `sub` 声明是任意字符串，因此在首次登录会话期间会使用不同的声明来关联帐户。用户首次使用 OpenID 登录到 Tableau Server 时，Tableau 会将 OpenID 用户帐户与 Tableau Server 中的对应用户帐户匹配。默认情况下，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 上添加新用户的表单。](/tableau/next/zh-cn/server-linux/zh-cn/Img/users_add_srvruser.png)

若要更改用于在 Tableau Server 上映射身份的 IdP 声明，请使用 `tsm authentication openid map-claims --user-name` 命令。有关详细信息，请参见[tsm authentication openid <commands>](https://help.tableau.com/v0.0/server-linux/zh-cn/cli_authentication_tsm.htm#TSMOIDC)。

### 更改 `sub` 声明

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

若要为默认 sub 声明指定其他 IdP 声明，请使用 `tsm authentication openid map-claims --id` 命令。有关详细信息，请参见[tsm authentication openid <commands>](https://help.tableau.com/v0.0/server-linux/zh-cn/cli_authentication_tsm.htm#TSMOIDC)。

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

## 身份验证上下文

如果您的 OpenID Connect IdP 需要特定的身份验证上下文，您可以使用 `vizportal.openid.essential_acr_values` 和 `vizportal.openid.voluntary_acr_values` 配置键指定密钥指定基本和自愿 ACR 值列表。有关详细信息，请参见[tsm configuration set 选项](https://help.tableau.com/v0.0/server-linux/zh-cn/cli_configuration-set_tsm.htm)。