Kerberos 疑难解答
本主题中的故障排除建议分为与服务器上的单一登录 (SSO) 相关的问题以及委派数据源的问题。
Tableau Server 单点登录
在 Kerberos SSO 环境中,通过 Web 浏览器或 Tableau Desktop 登录到 Tableau Server 的用户可能会看到一条消息,指明 Tableau Server 无法(使用单点登录)自动将这些用户登录。该消息建议用户改为提供 Tableau Server 用户名和密码。
在客户端计算机上排查登录错误
输入用户名和密码 — 若要检查用户对 Tableau Server 的一般访问权限,请通过输入用户的名称和密码进行登录。
如果这些凭据失败,则该用户可能不是 Tableau Server 上的用户。为了使 Kerberos SSO 起作用,用户必须能够访问 Tableau Server,并且必须获得 Active Directory 授予的票证授予票证 (TGT),如此列表后面的“TGT”项中所述。
检查其他用户的 SSO 凭据 — 尝试使用其他用户帐户通过 SSO 连接到 Tableau Server。如果所有用户均受影响,则问题可能在 Kerberos 配置中。
使用不是服务器计算机的计算机 — 如果在 localhost 上登录 Tableau Server,Kerberos SSO 将不起作用。客户端必须从 Tableau Server 计算机以外的计算机进行连接。
使用服务器名称而不是 IP 地址 — 如果输入 IP 地址作为 Tableau Server 名称,Kerberos SSO 将不起作用。此外,用于访问 Tableau Server 的服务器名称必须与 Kerberos 配置中使用的名称匹配(请参见下面的密钥表条目)。
确认客户端有 TGT — 客户端计算机必须有来自 Active Directory 域的 TGT(票证授予票证)。不支持代理授予票证的约束委派。
若要确认客户端计算机具有 TGT,请执行以下操作:
在 Windows 上,打开命令提示符并键入以下命令:
klist tgt
在 Mac 上,打开终端窗口并键入以下命令:
klist
输出应显示正尝试接受 Tableau Server 身份验证的用户/域的 TGT。
在以下情况下,客户端计算机可能没有 TGT:
客户端计算机使用 VPN 连接。
客户端计算机没有加入域(例如,它是在工作时使用的非工作用计算机)。
用户使用本地(非域)帐户登录到计算机。
计算机是没有将 Active Directory 用作网络帐户服务器的 Mac 计算机。
确认浏览器版本和设置 — 对于 Web 浏览器登录,请确保浏览器对于 Kerberos 受支持并在必要的情况下已正确配置。
Internet Explorer (IE) 和 Chrome 立即可在 Windows 上运行。
Safari 立即可在 Mac 上运行。
Firefox 需要额外的配置。
有关详细信息,请参见Kerberos SSO 的 Tableau 客户端支持。
在服务器上排查登录错误
如果无法通过客户端计算机解决问题,则下面的步骤是在运行 Tableau Server 的计算机上排除故障。管理员可以使用请求 ID 在 Tableau Server 上的 Apache 日志中查找登录尝试。
日志文件 — 查看 Apache error.log 中的错误(含有失败登录尝试的确切日期/时间)。
在 ziplog 存档中,这些日志位于 \httpd 文件夹下。
在 Tableau Server 上,这些日志位于 \data\tabsvc\logs\httpd\ 文件夹中。
键表条目 — 如果 error.log 条目包含“No key table entry matching HTTP/<servername>.<domain>.<org>@”(没有与 HTTP/<服务器名称>.<域>.<org> 匹配的键表条目)消息,例如:
[Fri Oct 24 10:58:46.087683 2014] [:error] [pid 2104:tid 4776] [client 10.10.1.62:56789] gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, No key table entry found matching HTTP/servername.domain.com@)
此错误是由以下任意项的不匹配造成的:
Tableau Server URL - 客户端计算机用于访问服务器的 URL。
这是您键入 Tableau Desktop 或浏览器地址栏的名称。它可以是短名称 (
http://servername
),也可以是完全限定域名 (http://servername.domain.com
)服务器 IP 地址的 DNS 反向查找。
它使用 IP 地址查找 DNS 名称。
在命令提示符处,键入:
ping servername
利用在 ping 服务器之后返回的 IP 地址执行 DNS 反向查找,键入:
nslookup <ip address>
nslookup 命令将返回该 IP 地址的网络信息。在响应的 Non-authoritative answer 部分中,验证完全限定的域名 (FQDN) 是否与以下配置的值匹配:
Kerberos .keytab 文件。
服务器的服务主体名称 (SPN)
有关配置这些值的详细信息,请参见了解密钥表要求。
验证 Kerberos 配置脚本
您可能需要修改用于生成环境变量密钥表文件的 ktpass 命令。查看知识库文章无法为 Tableau Server 生成 Kerberos 脚本配置(链接在新窗口中打开)中的疑难解答步骤。
数据源 SSO
委派的数据源访问失败
检查 vizqlserver 日志文件中是否有“workgroup-auth-mode”:
在 ziplog 存档中,这些日志位于 \vizqlserver\Logs 文件夹中
在 Tableau Server 上, 这些日志位于 \data\tabsvc\vizqlserver\Logs 文件夹中
在日志文件中查找“workgroup-auth-mode”。它应显示“kerberos-impersonate”而不是“as-is”。
Kerberos 委派多域配置
Tableau Server 能够从其他 Active Directory 域中委派用户。如果您的数据库使用 MIT Kerberos,您需要将 Kerberos 主体调整为数据库用户映射。具体而言,您将需要使用用户将从中连接的每个 Kerberos 域的规则更新 krb5.conf。使用 [realms]
部分中的 auth_to_local
标记将主体名称映射到本地用户名。
例如,假设一个用户为 EXAMPLE\jsmith
,其 Kerberos 主体为 jsmith@EXAMPLE.LAN
。在这种情况下,Tableau Server 将指定委派用户 jsmith@EXAMPLE
。Tableau Server 将使用 Active Directory 旧域别名作为 Kerberos 域。
目标数据库可能已经有诸如以下规则,用于将用户 jsmith@EXAMPLE.LAN
映射到数据库用户 jsmith
。
EXAMPLE.LAN = {
RULE:[1:$1@$0](.*@EXAMPLE.LAN)s/@.*//
DEFAULT
}
为了支持委派,您必须添加另一条规则,将 jsmith@EXAMPLE 映射到数据库用户:
EXAMPLE.LAN = {
RULE:[1:$1@$0](.*@EXAMPLE.LAN)s/@.*//
RULE:[1:$1@$0](.*@EXAMPLE)s/@.*//
DEFAULT
}
有关详细信息,请参见 MIT Kerberos 文档主题 krb5.conf(链接在新窗口中打开)。
跨域约束委派
在 KDC 运行于 Windows 2012 之前的 Windows Server 上的某些跨域方案中,委派可能会失败。您可能会看到以下错误:
- SQL Server Network Interfaces:The system cannot contact a domain controller to service the authentication request.Please try again later.(系统无法联系域控制器来为身份验证请求提供服务。请稍后再试。)
- SQL Server Native Client: Cannot generate SSPI context.(SQL Server Native Client:无法生成 SSPI 上下文。)
- 域控制器将返回:
KRB-ERR-POLICY error with a status STATUS_CROSSREALM_DELEGATION_FAILURE (0xc000040b)
。
“跨域”是指 Tableau Server 使用不同服务帐户运行在与数据源不同的域中的情形。例如:
- Tableau Server 使用 DomainA 服务帐户运行在 DomainA 上。
- SQL Server 使用 DomainB 服务帐户运行在 DomainB 上。
只有当两个服务器位于同一域中时,传统约束委派才能工作。用户可能来自其他域。
如果您看到上述错误,则您的 Active Directory 管理员应移除在委派帐户上配置的任何传统约束委派以启用此方案。可以使用 Active Directory 管理工具或通过移除与 Active Directory 属性 msDS-AllowedToDelegateTo.
关联的值来移除委派。
如果想要随跨域委派一起保留现有单域委派,您必须使用基于资源的约束委派对两者进行配置。
有关 Kerberos 和约束委派的详细信息,请参见 Microsoft 主题 Kerberos 约束委派概述(链接在新窗口中打开)。
Web 制作
有两种不支持 Kerberos 委派的 Web 制作场景:“在 Web 上连接到数据”和“在 Web 上创建数据源”功能尚不支持委派。具体而言,如果通过 Web 制作创建使用 Kerberos 的数据源,则数据源将使用“运行身份服务帐户”身份验证。如果要使用 Kerberos 委派创建数据源,则必须使用 Tableau Desktop 进行发布。