注册 EAS 以启用嵌入内容的 SSO
- 版本 :2022.1 及更高版本
作为 Tableau Server 管理员,您可以注册外部授权服务器 (EAS) 以在 Tableau Server 和 EAS 之间建立信任关系。
作为 Tableau Server 管理员,您可以注册外部授权服务器 (EAS) 以在 Tableau Server 和 EAS 之间建立信任关系。通过建立信任关系,您可以通过您已为 Tableau Server 配置的身份提供程序 (IdP),针对嵌入到您的自定义应用程序中的 Tableau 内容为您的用户提供单点登录 (SSO) 体验。在自定义应用程序中加载嵌入的 Tableau 内容时,将使用标准 OAuth 流程。用户成功登录到其 IdP 后,将会自动登录到 Tableau Server。
按照下面描述的步骤将您的 EAS 注册到 Tableau Server。
重要信息:本主题中的某些过程需要使用第三方软件和服务进行配置。我们已尽最大努力验证用于在 Tableau Server 上启用 EAS 功能的过程。但是,第三方软件和服务可能会发生变化,或者您的组织可能会有所不同。如果遇到问题,请参考第三方文档以获得权威的配置详细信息和支持。
步骤 1:开始之前
若要将 EAS 注册到 Tableau Server,您必须已配置 EAS。此外,EAS 必须发送包含下表中列出的已注册声明和标头的有效 JSON Web 令牌 (JWT)。
声明 | 描述或必需值 |
“iss ”(颁发者) | 标识受信任 EAS 及其签名密钥的唯一颁发者 URI。 |
“alg ”(算法) | JWT 签名算法。javadoc.io 文档的 Class JWSAlgorithm 页面中列出了支持算法名称。签名算法可以使用vizportal.oauth.external_authorization_server.blocklisted_jws_algorithms命令进行配置。 |
“sub”(使用者) | 经过身份验证的用户的 Tableau Server 用户名。 |
“aud ”(受众群体) | 值必须是:“tableau ” |
“exp ”(过期时间) | 有效的 JWT 不得过期。JWT 的过期时间必须在配置的最长有效期内。可以使用vizportal.oauth.external_authorization_server.max_expiration_period_in_minutes命令配置最长有效期。 |
“jti ”(JWT ID) | JWT ID 声明为 JWT 提供唯一标识符,并且区分大小写。 |
“scp ”(范围) | 支持的值包括: “ 注意:
|
注意:上述 JWT 声明记录在 Internet 工程任务组 (IETF) 组织分发的文档中的注册声明名称部分。
步骤 2:向 Tableau Server 注册您的 EAS
通过向 Tableau Server 注册您的 EAS,您可以在 EAS 和 Tableau Server 之间建立信任关系。这意味着当用户访问嵌入在您的自定义应用程序中的 Tableau 内容时,他们将被重定向以使用 IdP 进行身份验证。EAS 生成身份验证令牌,该令牌会传递给 Tableau Server 进行验证。在验证信任关系后,授予用户对嵌入内容的访问权限。
注册 EAS 后,信任建立的信任关系适用于 Tableau Server 上的所有站点。
注意:某些 EAS 支持显示同意对话框的选项,该对话框要求用户批准应用程序访问 Tableau 内容。为确保您的用户获得最佳体验,我们建议您将 EAS 配置为代表用户自动同意自定义应用程序的请求。
以 Tableau Server 管理员身份登录到 Tableau 服务管理器 (TSM) Web UI。有关详细信息,请参见登录到 Tableau 服务管理器 Web UI。
导航到“用户身份和访问”>“授权服务器”,然后执行以下操作:
选中“嵌入内容启用 OAuth 访问权限”复选框。
在“颁发者 URL”文本框中,粘贴 EAS 的颁发者 URL。
单击“保存未完成的更改”按钮。
完成后,执行以下操作:
在浏览器的右上角,单击“未完成的更改”按钮。
在页面的右下角,单击“应用更改并重新启动”按钮以停止并重新启动 Tableau Server。
步骤 3:嵌入后续步骤
将 Tableau Server 配置为使用您的 EAS 后,您必须将嵌入代码添加到您的自定义应用程序。确保在自定义应用程序调用的 Web 组件中包含 EAS 生成的有效 JWT,如步骤 1 中所述。
有关嵌入 Tableau 内容的详细信息,请参见以下一项或两项:
嵌入指标,请参见 Tableau 帮助中的将指标嵌入网页主题。
Tableau Embedding API v3 嵌入 Tableau 视图和指标。
注意:为了让用户在访问嵌入式内容时成功进行身份验证,浏览器必须配置为允许第三方 Cookie 或使用分区存储。Mozilla Firefox 默认启用分区存储,并且可以在 Google Chrome 浏览器上启用。
已知问题
使用已连接应用时存在一些已知问题,这些问题将在未来版本中解决。
工具栏功能:当嵌入式内容定义了工具栏参数时,并非所有工具栏功能都可以使用。为了解决此问题,我们建议您像下面的示例一样隐藏工具栏参数。
<tableau-viz id='tab-viz' src='https://<your_server>/t/<your_site>/...' toolbar='hidden'> </tableau-viz>
已发布数据源:将不会显示设置为提示用户提供数据库凭据的已发布数据源。为了解决此问题,如果可能,我们建议数据源所有者改为嵌入他们的数据库凭据。
疑难解答
当嵌入内容无法在您的自定义应用程序中显示时,您可以使用浏览器的开发人员工具来检查和识别可能与 Tableau Server 上启用的 EAS 功能相关联的错误代码。
请参阅下表以查看错误代码和潜在解决方案的描述。
错误代码 | 摘要 | 描述 | 潜在的解决方案或解释 |
5 | SYSTEM_USER_NOT_FOUND | 找不到 Tableau 用户 | 若要解决此问题,请验证 JWT 中的“sub”(使用者)声明值为 Tableau Server 的“用户名”。此值区分大小写。 |
16 | LOGIN_FAILED | 登录失败 | 此错误通常是由 JWT 中的以下声明问题之一引起的:
|
10081 | COULD_NOT_RETRIEVE_IDP_METADATA | 缺少 EAS 元数据端点 | 若要解决此问题,请验证 EAS 是否配置正确并且调用了正确的颁发者。 |
10082 | AUTHORIZATION_SERVER_ISSUER_NOT_SPECIFIED | 缺少颁发者 | 若要解决此问题,请验证是否调用了正确的颁发者。若要更改颁发者 URL,您可以使用vizportal.oauth.external_authorization_server.issuer命令。 |
10083 | BAD_JWT | JWT 标头包含问题 | 此错误通常是由 JWT 标头的以下问题之一引起的:
|
10084 | JWT_PARSE_ERROR | JWT 包含问题 | 若要解决此问题,请验证以下各项:
|
10085 | COULD_NOT_FETCH_JWT_KEYS | JWT 找不到密钥 | 找不到密文。 若要解决此问题,请验证是否调用了正确的颁发者。若要更改颁发者 URL,您可以使用vizportal.oauth.external_authorization_server.issuer命令。 |
10087 | BLOCKLISTED_JWS_ALGORITHM_USED_TO_SIGN | JWT 签名算法存在问题 | 若要解决此问题,您可以移除签名算法。有关详细信息,请参见vizportal.oauth.external_authorization_server.blocklisted_jws_algorithms。 |
10088 | RSA_KEY_SIZE_INVALID | JWT 签名要求存在问题 | 若要解决此问题,请使用 EAS 或 IdP 验证 JWT 是否使用大小为 2048 的 RSA 密钥进行签名。 |
10091 | JTI_ALREADY_USED | 需要唯一的 JWT | JWT 已在身份验证过程中使用。若要解决此问题,EAS 或 IdP 必须生成新的 JWT。 |