LDAP 身份验证错误 – ActiveSupport::MessagePack::UnserializableObjectError

大家好,

我正在自托管的 Discourse (Docker 安装) 上使用 discourse-ldap-auth 插件。
在最近一次重建后,所有用户的 LDAP 身份验证都开始失败

以下是 production.log 中相关的错误:

(ldap) 身份验证失败!ldap_error: ActiveSupport::MessagePack::UnserializableObjectError,
不支持类型 Net::BER::BerIdentifiedString 用于对象“********* (Kullanıcı Teknolojileri Yönetim Müdürlüğü)”
开始 GET “/auth/failure?message=ldap_error&origin=http%3A%2F%2Fic\ot*rol.va**fb**nk.intra%2Flogin&strategy=ldap”
由 Users::OmniauthCallbacksController#failure 处理,格式为 HTML
完成 200 OK

详细信息

  • 该问题影响所有 LDAP 用户

  • 我们 LDAP 目录中的所有用户都具有包含土耳其字符(ğ、ü、ş、İ 等)的 displayName 值。

  • 该错误发生在 LDAP 身份验证尝试之后——没有用户成功登录。

这是最新版 Discourse 的普遍问题吗?这可能与 Ruby 不兼容有关吗?您建议什么解决方案?

1 个赞

大家好,Osmanmermer,
我们这里有同样的错误好几天了:
(ldap) Authentication failure! ldap_error: ActiveSupport::MessagePack::UnserializableObjectError, Unsupported type Net::BER::BerIdentifiedString for object "username"

  • 该问题目前影响的是新创建的、从未登录过的 LDAP 用户
  • 该问题与特殊字符无关
1 个赞

我已将其移至 Bug,以防是最近引入的 bug,因为它似乎以类似的方式影响了两个站点。

您那边自上周以来有什么变化吗?再次更新是否解决了问题?

哎呀,刚注意到这不是官方插件,所以不受官方支持。我也没马上找到插件主题。我们应该把它移到那里。有人能帮忙找一下吗?我现在正在路上,不在办公桌旁。

1 个赞

您好,这与更新到 3.6.0.beta2 相关,并且该错误仅影响新创建的帐户(Ldap 用户创建模式)。现有帐户仍然可以登录。回滚到 3.6.0.beta1 后一切恢复正常。LDAP 身份验证插件没有变化。

很抱歉听到您遇到了麻烦!不幸的是,LDAP 身份验证插件不是由 Discourse 编写的,因此不受支持。它甚至在这里没有 Plugin 主题。如果您需要有关它的帮助,请在 GitHub 上联系作者或发起一个 Marketplace 主题,看看社区中的专家是否能胜任。