Oracle Apex 5 LDAP搜索无法对全局编录

时间:2016-08-23 14:59:14

标签: oracle ldap oracle-apex

在Oracle Apex中,如果我添加一个非常具体的专有名称并选择使用精确可分辨名称的选项,我可以通过LDAP进行身份验证:

CN=%LDAP_USER%,OU=Office,OU=Users,OU=UKAPD,DC=rd,DC=mycompany,DC=net

这很有效。

但是,我需要在OU和域中进行搜索,因此需要对全局编录使用通配符搜索。请注意,上述工作LDAP DN也与端口3268上的全局编录相对。

所以,如果我选择"否"要使用精确专有名称,请将我的DN减少为:

DC=mycompany,DC=net

然后添加搜索过滤器:

CN=%LDAP_USER%

我在LDAP上遇到绑定失败。

  

•身份验证失败ORA-31202:DBMS_LDAP:LDAP客户端/服务器   错误:操作错误。 000004DC:LdapErr:DSID-0C090749,评论:In   为了执行此操作,必须完成成功绑定   连接。,数据0,v2580

如何在Oracle Apex中的所有域和OU中执行全局搜索?关于这个主题的文献很少。我通过我的DBA在Oracle中创建了必要的ACL - 我可以看出,在使用非常特定的DN字符串时,我成功地进行了身份验证。

1 个答案:

答案 0 :(得分:0)

编辑:我现在看到你特别提到了全局目录,我错误地认为它没有通过“普通”LDAP公开。

我想你已经阅读了这篇MS Technet文章:https://technet.microsoft.com/en-us/library/cc978012.aspx 但是,由于您没有提及它,我建议您查看该文章“全局目录搜索库”一节中提到的特殊NULL值的使用。

另一个有趣但可能过多的解决方法: https://serverfault.com/a/107368/71956

以下是我的原始答案,可能不再有效。

  

我不相信你能做到这一点。这不是ApEx的限制,而是它是LDAP工作方式的“自然”工件。 LDAP目录(通常或多或少地对应于“网络域”)作为独立实体存储,存储在其自己的数据库中,具有自己的服务进程(可能是其自己的服务器主机)。您必须具有该特定的“base dn”才能为创建任何LDAP会话建立域上下文。

     

我怀疑像“域林”和多域信任这样的花哨的东西实际上是在后端处理,作为循环遍历域列表,在单独的LDAP会话上具有单独的LDAP查询,每个LDAP会话都有适当的基本dn上下文。也就是说,LDAP本身并没有“全局搜索”这样的东西。但是一些不错的软件系统通过维护有效/可信域/目录列表来模拟它,并且每次请求全局搜索时,它只执行N次搜索,每个域/目录执行一次。

     

解决这个问题的一种方法:构建所有自定义身份验证方案,使用对DBMS_LDAP的PL / SQL调用并维护(或者可能,可能查询)有效域列表以自行循环(就像所有那些其他愉快,方便的客户端工具一直在为你做的事情)。