Tableau Server集成Keycloak OpenID Connect遇errorCode=69验证失败
问题排查:Tableau OpenID Connect登录id_token验证失败(errorCode=69)
核心错误点
从扩展日志可明确关键失败原因:
Verifying access token isSignatureValid:true, isDestinedToUs:true, wasIssuedByOurIdP:false, isTheTokenStillCurrent:true
签名有效、令牌目标正确、未过期,但Tableau判定令牌并非由配置的IDP签发,这是errorCode=69的直接诱因。
可能原因及解决方法
1. IDP签发地址与Tableau配置不匹配
- 问题:Keycloak签发JWT时的
iss(签发者)声明值,和Tableau通过config-url获取的IDP元数据中issuer字段不一致。比如Keycloak内部用http://keycloak:8090/auth/realms/myrealm作为iss,但Tableau配置的元数据返回外部域名地址,或反过来。 - 解决步骤:
- 解码ID令牌,获取
iss字段的具体值。 - 访问Tableau配置的
config-url,查看返回的issuer字段值。 - 确保两者完全一致,包括协议(http/https)、主机名、端口、realm路径,无拼写错误。
- 解码ID令牌,获取
2. Keycloak Realm前端URL配置错误
- 问题:Keycloak默认用内部主机名生成
iss声明,若未配置Realm前端URL,签发的JWT会包含内部不可访问地址,导致Tableau校验不通过。 - 解决步骤:
- 登录Keycloak后台,进入对应Realm的「设置」页面。
- 设置「前端URL」为Tableau可访问的Keycloak外部地址,比如
http://keycloak.domain.some:8090/auth。 - 保存配置后重新发起登录,检查新JWT的
iss字段是否更新为该外部地址。
3. Realm名称拼写不一致
- 问题:你提供的Keycloak证书路径是
http://keycloack:8090/auth/realms/my/...,但Tableau配置的config-url用的是myrealm,存在Realm名称拼写不一致的可能。 - 解决步骤:
- 确认Keycloak实际使用的Realm名称(
my或myrealm)。 - 修正Tableau的
config-url,确保Realm名称与Keycloak一致,例如统一为http://keycloak:8090/auth/realms/my/.well-known/openid-configuration。
- 确认Keycloak实际使用的Realm名称(
4. Tableau返回URL协议/主机名不一致
- 问题:你配置的Tableau返回URL是
https://tableau-openid.domain.some,但访问地址是http://tableau-openidc.domain.some,协议和主机名存在差异,可能影响IDP回调校验。 - 解决步骤:
- 统一Tableau访问地址和返回URL的协议、主机名,确保完全匹配。
- 更新Keycloak客户端的「根URL」和「有效重定向URI」,与Tableau返回URL保持一致。
补充验证步骤
完成调整后重新发起登录:
- 开启Tableau扩展日志,确认
wasIssuedByOurIdP变为true。 - 若仍有问题,检查JWT的
aud(受众)声明是否包含Tableau的client-id(some-clientid),确保令牌确实签发予Tableau客户端。
内容的提问来源于stack exchange,提问作者user1767316
相关产品推荐
相关产品推荐

