如何将Discourse连接到两个OIDC提供商?

我使用此插件成功连接了 GitLab 和 Microsoft (Azure)。顺便说一句:对于 Azure AD 服务,请确保使用“应用程序客户端 ID”作为客户端 ID,而不是机密 ID 或值)。

如何将 Discourse 与两个 OIDC 提供商(例如 GitLab Azure)连接起来?

编辑:我已经设法通过 OAuth2 成功启用了 GitLab 登录,所以我的问题现在更具“理论性”。

我认为你需要分叉该插件并更改其名称,以便能够对其进行两次配置。也许你可以分叉它并将其硬编码到其中一项服务中。

我注意到,自从 OpenID Connect 插件被合并到核心功能中并且其 Git 仓库已归档后,分叉(forking)已不再合适。

不过,我希望注册两个应用程序(每个租户一个应用程序)。既然我已经在 OpenID Connect 插件下成功注册了一个租户的应用程序,我是否可以将第二个应用程序的注册 ID、密钥和发现 URL 填入下方的设置中?

我认为本主题标题的解决方案就在上一篇文章中——您不需要使用两个 OIDC,而是需要一个 OIDC 和一个 Microsoft_auth

microsoft_auth_email_verified 并不会让 Microsoft Auth 表现得像已配置的 OIDC 流程本身。据我理解,它仅使 Discourse 默认将 Microsoft 提供的电子邮件视为已验证/受信任,如果这些电子邮件确实已验证,这有助于账户关联或避免重复账户:如果这些电子邮件确实已验证:

关于按钮文本,OIDC 确实位于 js.login.oidc 文本命名空间下:

而 Microsoft Auth 似乎使用的是 microsoft_office365 翻译命名空间,而非 oidc——例如,此错误报告提到了 en.login.microsoft_office365.name

因此,我认为 Microsoft Auth 相关的文本键命名空间是 microsoft_office365,而不是 oidc