Net :: LDAP add()失败,没有错误信息。我如何找到记录未验证的原因?

问题描述:

因为我构建了一个管理LDAP中用户的Ruby on Rails应用程序,所以我打了两天。在微调各种属性的包含和格式的同时,我经常会有ldap.add()失败,并且除了可能引发的异常外,几乎没有反馈。我通常知道这是一个数据验证错误,例如缺少必需的属性或格式不正确的属性值 - 但我无法在服务器(Apache DS)或客户端找到任何可能表明字段失败的为什么这是失败的。Net :: LDAP add()失败,没有错误信息。我如何找到记录未验证的原因?

那么...你怎么看到原因为什么一个LDAP添加(或者替换,删除,打开...)失败?

然后我偶然发现了ldap.get_operation_result,我有一个真正的facepalm时刻。我故意通过在我的库中仔细检查get_operation_result重新解决了几个我通过仔细检查解决的问题,并且每次都详细描述了问题所在。

这个函数在抢救异常的情况下很有用,或者add(),modify(),delete()等简单地返回false。

ldap.add(dn: dn, attributes: attributes) 
Rails.logger.info("ldap.add: #{ldap.get_operation_result}") 

上面的代码片保存了我的理智,更不用说繁琐的狩猎和啄食小时的测试了。

例如,这里是它表明,我没有提供所需的sn属性的错误信息只是其中的一部分:

ERR_279 Required attributes [sn(2.5.4.4)] not found within entry uid=david,o=users,dc=example,dc=com" 

它也将显示与坏的服务器连接凭据信息等

HTH