Keycloak SSO 和登出问题

你好!
@david 请帮帮我,这位大好人!))))

我已经成功配置了 Discourse + Keycloak SSO + SAML 插件 + OpenID Connect 插件的组合。唯一美中不足的是登出功能。

当我从论坛登出时,用户会被取消授权,这部分工作正常。
但查看 Keycloak 上的活跃会话时,发现该用户的会话并未被删除。
我怀疑这与登出 URL 的设置有关,只是不确定是在 Discourse 还是 Keycloak 中配置。

我在 Keycloak 上的 SAML 设置如下:

我在 Keycloak 上的 OpenID Connect 设置如下:

OpenID Connect 插件支持 RP 发起的注销。Keybase 是否支持该功能?

1 个赞

现在需要弄清楚它是什么,以及 Keycloak 中是否包含它。
openid-connect 插件中的这个选项在哪里配置?

它是在站点设置中配置的:

谢谢!我会尝试用谷歌搜索 Keycloak 对此问题的解答。

是的!它运行正常!我想澄清的是,必须设置 openid_connect_rp_initiated_logout_redirect 变量。

@david 我还有一个问题,一个很重要的问题。
目前我正处于 Keycloak SSO 测试的最后阶段,需要在 SAMLOpenID Connect 之间选择一个协议。
我更喜欢 OpenID Connect,但目前在使用 OpenID Connect 创建新用户时发现了一个令人烦恼的问题。

为了说明这个问题,我先从另一端说起。当使用 SAML 创建新的论坛用户时,用户会在 SSO 中创建,并透明地提交给 Discourse 进行创建。而且用户会立即被激活——这一点非常重要!
也就是说,当我在 Discourse 论坛上点击“注册”时,我会跳转到 Keycloak,在那里创建用户、确认邮箱等。之后,我会被重定向回 Discourse 论坛,此时用户已经创建完成并且已激活,自动完成:

但如果我使用 OpenID Connect 插件,那么在创建新用户时,会出现以下窗口:

这非常不方便!这是为了什么?毕竟用户在 SSO 上创建账户时已经确认了邮箱。有没有办法摆脱这个窗口?

提前非常感谢!

如果该消息出现在 OpenID Connect 中,则意味着身份提供商向 Discourse 传递了 email_verified: false 的消息。如果您启用详细调试设置,它将把所有认证数据打印到 /logs 供您检查。希望有一种方法可以告诉 Keycloak 正确传递验证状态。

1 个赞

那么,为什么 SAML 插件会忽略这一点呢?

在 SAML 插件中,这由全局设置 saml_default_emails_valid 控制(默认为 true)。

我找到解决方案了!))))
在 Keycloak 中:

禁用这些选项:

2 个赞

只要您 100% 确定 Keycloak 已验证过邮箱,那就没问题。如果邮箱未经过验证,这样做会让您的 Discourse 站点面临攻击风险。

1 个赞

是的,没错……
现在测试新场景——两个论坛共用一个 Keycloak OpenID 客户端 ))

顺便问一下,@david,你觉得哪种做法更正确:

  1. 为所有论坛使用一个 OpenID 客户端,并指定所需的“有效重定向 URL",就像我现在这样:

  2. 还是为每个论坛使用独立的 OpenID 客户端?

我不太熟悉 Keycloak,但这两种方案听起来都可行。如果你之后想为每个论坛设置独立的访问控制,将它们作为独立的客户端可能会更方便 :man_shrugging:

2 个赞