前言

之前利用 keycload 通过 openid 的方式整合了 seafile 和 seatable 的应用。实现了同一用户只需认证一次即可登录多个应用的效果。接下来想继续将 confluence 的应用也整合进来Confluence 官网提供的解决方案是通过 SAML 的方式提供 SSO 的单点登录,但是照着操作一遍下来一直未能成功,先记录这次的操作步骤和错误情况。

最后测试验证时存在以下的错误提示,请求已经转发到 keycloak ,但是 keycloak 页面反馈无效的请求,如下图:

Confluence 9.5.1 配置【认证配置】选项要求使用 https 方式,这里测试环境通过启用 http 方式操作,生产环境需要确保使用 https

禁用针对 SSO 配置的 https 要求

该操作步骤参照官网说明执行。

  1. 先使用管理员登陆 confluence
  2. 在浏览器打开 http://192.168.182.100:8090/admin/darkfeatures.action 类似的配置页面
  3. 在该页面的下方输入 atlassian.authentication.sso.skip.https.requirement 来临时禁用 https
  4. 如需取消删除该项的内容即可

Confluence 配置 SAML 认证

查看 keycloak 的 SAML 信息

在配置 Confluence 之前需要在 keycloak 中找到对应的 saml 配置信息。官网给出的参考操作步骤是直接使用 keycload 的 master 领域,这里使用的是单独新建 confluence 领域,后续的操作都只针对该 confluence 领域,不会造成干扰和影响。

在 keycloak 中找到新建的  confluence 领域信息,点击该领域关于 【SAML】的相关信息(http://192.168.182.52:8080/realms/confluence/protocol/saml/descriptor),找到如下图所示的几项内容:entityIDX509Certificate 和 Location

在 Confluence 中配置 SAML 认证

登录并进入 Confluence 的后台管理界面。找到【General Configuration】-【Authentication methods】在该界面添加新的认证方法【SAML single sign-on】。

注意:需要先按前面的步骤取消 https 的配置要求,否则该页面后续设置的内容无法正常保存


参照 keycloak 中的关键信息完成如下图的配置

在 keycloak 中创建 saml 客户端

如下图完成设置:

 完成上述步骤后,在 keycloak 中创建用户

启用并测试 SAML 认证

完成上述配置后,进入 Confluence 的 【Authentication methods】认证界面,点击页面上的测试会自动跳转到 keycloak 的登陆页面

错误一:keycloak 界面显示 “Invaild requester”

在 confluence 的配置页面点击 SAML 的认证测试后出现下图的错误页面。同时 keycloak 的日志中也存在 “2025-06-09 15:38:44,212 ERROR [org.keycloak.protocol.saml.SamlService] (executor-thread-88) request validation failed: org.keycloak.common.VerificationException: SigAlg was null”的错误提示

原因:keycloak 的 client 中的 【key】配置项启用了签名

进入 keyclaod 找到 SAML 的 client,进入 client 配置项找到【keys】将 【Client signature required 】修改为 off