您好!我正在尝试使用 Discourse OpenID Connect 插件 和 Keycloak 来设置 Discourse。
我已经成功地使其正常工作,并且不仅能够使用我的 Keycloak 凭据登录到我的 Discourse 实例,还能够将已有的 Discourse 帐户与 OIDC 帐户关联起来。不幸的是,我在设置 Keycloak 容器时犯了一个错误,最终丢失了它的配置和数据库。
此后,我重新安装了 Keycloak(这次是正确地安装!),并重新配置了 Discourse 以使用新的客户端 ID。但是,尽管集成似乎正在工作(在 /logs 中启用日志显示身份验证实际上已成功),但我似乎无法再将 Discourse 帐户与 OIDC 帐户关联起来。
当我尝试登录 Discourse 时,我使用 OIDC,会看到新的帐户 UI,然后单击链接以与现有帐户关联;我登录,被重定向到 Discourse,如果我注销并再次登录,我将看到相同的新的帐户 UI。
我使用了 Data Explorer 插件来查看关联,我的用户显示为 NULL;尽管提供商 ID 与 Keycloak 中的用户 ID 匹配。
我已开启“OpenID Connect 允许关联更改”选项。
我猜想 Discourse 仍然保留着我之前 Keycloak 安装的某些内容,而仅仅更改新的客户端 ID 并不能解决问题。
我是否应该检查其他我可能忽略的地方?
祝好!
pmusaraj
(Penar Musaraj)
2
您是否在账户之间使用了相同的电子邮件地址?您能否使用之前未与 Keycloak 关联的新账户重现此问题?
感谢您的快速回复!
我之前在两个账户之间没有使用相同的电子邮件地址,但我已在 Keycloak 中将其更改为与 Discourse 中使用的地址匹配,但结果仍然相同。Data Explorer 中的响应也是一样的(“NULL”用户)。
我尝试创建一个全新的用户,但收到“无效的用户名、电子邮件或密码”错误,尽管用户名完全可用,电子邮件有效,并且密码是由我的密码管理器生成的。这很可能无关紧要,但这也是我需要弄清楚的另一个问题。
你好,
我这里也遇到了同样的问题。我使用 Nextcloud 作为 OIDC 提供商,但这可能与此问题无关。
我可以通过 Nextcloud 登录。之后,系统会像上面描述的那样,让我选择注册新账户或使用现有账户登录。但系统并未通过电子邮件地址将两者关联起来。
如果我选择“注册”,页面会直接跳转回已登出状态的主页,我必须重新登录。系统没有显示任何错误信息。
这确实很奇怪。
如果我用一个没有对应 Discourse 账户的 OIDC 账户登录,一切都能正常工作。系统会直接创建新账户,并在用户设置中显示已关联的账户。
也许还有人知道是我哪里操作有误,或者这确实是一个 Bug。
此致
Mike
大家好,
我找到了映射无法工作的原因。如果也有人需要解决此问题,以下是我的解决方案。
提交的电子邮件地址默认不会被标记为“已验证”。为实现这一点,我在管理后台的 OpenID Connect 提供商 → 设置中,将“令牌中的电子邮件地址验证声明”的值设置为“始终验证”。